Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“错误”;类型错误:';str';对象不支持项分配“;使用Python将值从一个组合框分配给另一个组合框时,Tkinter_Python_Python 3.x_Tkinter_Tkinter Canvas - Fatal编程技术网

“错误”;类型错误:';str';对象不支持项分配“;使用Python将值从一个组合框分配给另一个组合框时,Tkinter

“错误”;类型错误:';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

在我使用Tkiner的PythonUI中,有两个组合框,我将值从一个组合框传递到另一个组合框 组合框,基于第一个列表中的值。这些值存储在数据库中并从数据库中检索。如果代码从头开始运行,组合框将显示正确的值。但是如果我在列表中添加了任何新值,那么在组合框1中,这些值会被添加,并且可以正常工作,但是在我分配值的第二个组合框中会出现错误。这些值被指定为列表。有谁能告诉我可能是什么问题吗。下面是片段的附件

 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字母是为特定目的而保留的,打破惯例会使代码更难阅读。