我无法更新 Tkinter 中的行。
如果我将行设置为常规变量,它不会更新。这显示在第一个脚本中。如果我像处理文本一样将行设置为 IntVar 类型,它会拒绝数据类型。这显示在第二个脚本中。
需要注意的 2 件事:如果您观察脚本 1 中的计数器,它会正常上升,但不会被应用。如果您使用 self.activeRow.get() 而不是 self.activeRow,它将有效地将其转换为正常变量,其结果与脚本 1 中显示的结果相同。
脚本 1
from tkinter import *
class Example(Frame):
def move(self):
self.activeRow += 1
print(self.activeRow)
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.initUI()
def initUI(self):
self.columnconfigure(0, pad=0)
self.columnconfigure(1, pad=0)
self.columnconfigure(2, pad=0)
self.rowconfigure(0, pad=0)
self.rowconfigure(1, pad=0)
self.rowconfigure(2, pad=0)
Label(self, text= 'row 0').grid(row=0, column=0)
Label(self, text= 'row 1').grid(row=1, column=0)
Label(self, text= 'row 2').grid(row=2, column=0)
#regular variable
self.activeRow = 0
b = Button(self, text="normal variable {0}".format(self.activeRow), command=self.move)
b.grid(row=self.activeRow, column=1)
self.pack()
def main():
root = Tk()
app = Example(root)
root.mainloop()
if __name__ == '__main__':
main()
脚本 2
from tkinter import *
class Example(Frame):
def move(self):
self.activeRow.set(self.activeRow.get() + 1)
print(self.activeRow.get())
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.initUI()
def initUI(self):
self.columnconfigure(0, pad=0)
self.columnconfigure(1, pad=0)
self.columnconfigure(2, pad=0)
self.rowconfigure(0, pad=0)
self.rowconfigure(1, pad=0)
self.rowconfigure(2, pad=0)
Label(self, text= 'row 0').grid(row=0, column=0)
Label(self, text= 'row 1').grid(row=1, column=0)
Label(self, text= 'row 2').grid(row=2, column=0)
#Tkinter IntVar
self.activeRow = IntVar()
self.activeRow.set(0)
b = Button(self, text="IntVar", command=self.move)
b.grid(row=self.activeRow, column=1)
self.pack()