“错误”;类型错误:';str';对象不支持项分配“;使用Python将值从一个组合框分配给另一个组合框时,Tkinter
在我使用Tkiner的PythonUI中,有两个组合框,我将值从一个组合框传递到另一个组合框 组合框,基于第一个列表中的值。这些值存储在数据库中并从数据库中检索。如果代码从头开始运行,组合框将显示正确的值。但是如果我在列表中添加了任何新值,那么在组合框1中,这些值会被添加,并且可以正常工作,但是在我分配值的第二个组合框中会出现错误。这些值被指定为列表。有谁能告诉我可能是什么问题吗。下面是片段的附件“错误”;类型错误:';str';对象不支持项分配“;使用Python将值从一个组合框分配给另一个组合框时,Tkinter,python,python-3.x,tkinter,tkinter-canvas,Python,Python 3.x,Tkinter,Tkinter Canvas,在我使用Tkiner的PythonUI中,有两个组合框,我将值从一个组合框传递到另一个组合框 组合框,基于第一个列表中的值。这些值存储在数据库中并从数据库中检索。如果代码从头开始运行,组合框将显示正确的值。但是如果我在列表中添加了任何新值,那么在组合框1中,这些值会被添加,并且可以正常工作,但是在我分配值的第二个组合框中会出现错误。这些值被指定为列表。有谁能告诉我可能是什么问题吗。下面是片段的附件 def SelectTagPosition(self,event=None): self
def SelectTagPosition(self,event=None):
self.positionID=event.widget.get()
oConn = sqlite3.connect( 'VideoTags.db' )
curs = oConn.cursor()
# for displaying in the Select Regio Combo box
curs.execute("select PolygonID from VideoPolygonTable where videoID = " + str( self.curVideoInfoID ) + " and position = " + str( self.positionID ) )
self.polygonIds = curs.fetchall()
print("Select Region",self.polygonIds)
oConn.close()
#self.SelectRegionComboBox.state="normal"
self.SelectRegionComboBox['values']=self.polygonIds
print("Select Region ,self.curVideoInfoID",self.curVideoInfoID)
self.GetVideoPolygonsForPosition( self.curVideoInfoID, self.positionID )
#self.totalVideoFrames=self.cap.get(7)
self.cap.set( 1, int(self.positionID) )
ret, frame = self.cap.read()
self.VideoFrameSavedInDB=frame
polygonLen = len( self.curVideoPolyons )
if polygonLen > 0:
self.DrawPolygonsOnSavedImagefromDB()
def SelectRegionPosition(self,event):
self.regionId = event.widget.get()
self.polygonIdToBeDeleted=self.regionId
self.polygonIdToBeEdited=self.regionId
self.DeletePolygonButton['state']='normal'
self.EditPolygonButton['state'] ='normal'
self.SaveEditsButton['state']='normal'
oConn = sqlite3.connect( 'VideoTags.db' )
curs = oConn.cursor()
self.SelectRegionComboBox['values'] = self.polygonIds
curs.execute("select * from VideoPolygonTable where PolygonID = " + str(self.regionId ) + " and position = " + str( self.positionID ) )
self.regionCoordinates = curs.fetchall()
#self.curVideoPolygonData.append(self.regionData)
self.DrawSelectedPolygonOnImage()
两个组合框设置如下:
I have initialized it in a class called GUI :self.TagPositionComboBox = ttk.Combobox( TagsButtonPanel,textvariable=self.tagPositionComboBoxVar)
self.TagPositionComboBox.set( "Tag Position" )
self.TagPositionComboBox.grid(row=0, column=4, padx=10,pady=20)
self.TagPositionComboBox.bind( '<<ComboboxSelected>>', self.SelectTagPosition )
#self.selectRegionComboBoxVar = tk.StringVar()
self.SelectRegionComboBox = ttk.Combobox(TagsButtonPanel)#, textvariable=self.selectRegionComboBoxVar )
self.SelectRegionComboBox.set( "Select Region" )
self.SelectRegionComboBox.grid(row=0, column=5, padx=10, pady=20)
self.SelectRegionComboBox.bind( '<<ComboboxSelected>>', self.SelectRegionPosition )
我在一个名为GUI的类中初始化了它:self.TagPositionComboBox=ttk.Combobox(TagsButtonPanel,textvariable=self.tagPositionComboBoxVar)
self.TagPositionComboBox.set(“标记位置”)
self.TagPositionComboBox.grid(行=0,列=4,padx=10,pady=20)
self.TagPositionComboBox.bind(“”,self.SelectTagPosition)
#self.selectRegionComboxVar=tk.StringVar()
self.SelectRegionComboBox=ttk.Combobox(标记按钮面板)#,textvariable=self.selectRegionComboxVar)
self.SelectRegionComboBox.set(“选择区域”)
self.SelectRegionComboBox.grid(行=0,列=5,padx=10,pady=20)
self.SelectRegionComboBox.bind(“”,self.SelectRegionPosition)
使用跟踪发布完整错误。然而,它看起来像一个self.
元素实际上是一个字符串。嗨,错误如下回溯(最近一次调用):文件“E:\Anaconda\envs\tensorflow\lib\tkinter\u init\uuuz.py”,第1702行,在call return self.func(*args)文件中“E:/gitLastst_today/tier3d_poc_engineering/windows/Tag_Video/TagVideoApp.py”,第467行,在SelectTagPosition self.SelectRegionComboBox[“值”]=self.polygonIds TypeError:“str”对象不支持项目分配将其发布在问题中,并将其格式化为代码,以使其易读。但是,您的self.SelectRegionComboBox
在某个点上正在变成字符串。您尚未发布相关代码,但我们无法知道其位置。这很可能发生在调用它的代码附近这两个函数。我已经在一个名为GUI的类中对其进行了初始化:如果第一个函数调用没有导致相同的错误,那不太可能是因为初始化。它可能发生在对SelectTagPosition
和SelectRegionPosition
的调用之间。另外,所有这些名称都应该是小写的。大写字母l字母是为特定目的而保留的,打破惯例会使代码更难阅读。