我正在编写一个程序,用于分析包含我的信用卡月结单的CSV文件。我正在尝试使用tkinter创建一个gui,其中我有一行标签标题,后面是由3个标签组成的行,然后是第4列中有多个类别的组合框。我写了一个定义表的每一行的类。我想将值传递给类的实例,该实例指定组合框的初始值。每个实例或行都有所不同。或者至少应该...... [/ p>
我的问题是,在为每个行/实例传递不同的数字时,我总是得到具有为第一个创建的实例指定的值的所有行。 我的课程如下:
class CatFormApp:
def __init__(self,parent):
self.parent = parent
self.datelabel = Tkinter.Label(root, text='Date',font ='Verdana 12 bold',borderwidth=5).grid(row=0,column=0)
self.transactionlabel = Tkinter.Label(root, text='Transactions',font ='Verdana 12 bold',borderwidth=5).grid(row=0,column=1)
self.paidoutlabel = Tkinter.Label(root, text='Paid Out',font ='Verdana 12 bold',borderwidth=5).grid(row=0,column=2)
self.catlabel = Tkinter.Label(root, text='Category',font ='Verdana 12 bold',borderwidth=5).grid(row=0,column=3)
class RowFormat:
def __init__(self,parent,rownumbval,defaultval,dateval,transactionval,paidoutval,CatTupleVals,bkg):
self.parent = parent
self.datevallabel = Tkinter.Label(root, text=dateval, borderwidth=5).grid(row=rownumbval,column=0)
self.transactionvallabel = Tkinter.Label(root, text=transactionval, borderwidth=5, background = bkg).grid(row=rownumbval,column=1)
self.paidoutvallabel = Tkinter.Label(root, text=paidoutval, borderwidth=5).grid(row=rownumbval,column=2)
self.combo(rownumbval,defaultval,CatTupleVals)
def combo(self,rownumb,default,CatTuple):
self.box_value = '1'
self.box = ttk.Combobox(self.parent,textvariable = self.box_value)
self.box['values']=CatTuple
self.box.current(default)
self.box.grid(row=rownumb,column=3)
我的主要代码的相关位是:
root = Tkinter.Tk()
app = CatFormApp(root)
row = ['']*(len(CreditData['Transactions'])+1)
for r in range(1,len(CreditData['Transactions'])):
if CreditData['Paid out'][r-1] != '':
if noMatch[r-1] == True:
print 1
row[r] = RowFormat(root,r,1,CreditData['Date'][r-1],CreditData['Transactions'][r-1],CreditData['Paid out'][r-1][1:],tuple(CatHeadings[:-1]),bkg = 'red')
else:
print 2
row[r] = RowFormat(root,r,2,CreditData['Date'][r-1],CreditData['Transactions'][r-1],CreditData['Paid out'][r-1][1:],tuple(CatHeadings[:-1]),bkg = 'white smoke')
root.mainloop()
在上面的示例中,所有组合框都具有与1相关联的值。而我应该得到一些带有1而一些带有2取决于if语句。我感到困惑,因为我做了一些与传递的其他标签值非常相似的东西,这些都是按照预期的方式出现的。
如果有人可以解释我出错的地方,我真的很感激
答案 0 :(得分:0)
此代码错误:
application/x-www-form-urlencoded
httppost.setHeader("Content-Type", "application/json");
属性的值必须是tkinter类self.box_value = '1'
self.box = ttk.Combobox(...,textvariable = self.box_value)
的实例(或其他特殊tkinter变量之一)。
答案 1 :(得分:0)
像这样使用:
self.box_value = Tkinter.StringVar()
self.box = ttk.Combobox(self.parent,textvariable = self.box_value)
要设置值,请使用:
self.box['values'] = ('A', 'B', 'C')
要选择第一项,请使用:
self.box.current(0)