我無法更新Tkinter中的行。將行設置爲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()
您能否提供更完整的代碼示例? 'row = self.activeRow'應該可以工作,前提是'self'具有爲'activeRow'設置的值。 – cfedermann 2012-04-14 08:52:26
好的,我只是用更多的細節重寫了它。 如果我的格式化/樣式已關閉,請讓我知道,因爲我在6周前纔開始學習如何編程。 – Talisin 2012-04-14 10:30:13
哦,只是爲了節省您重新閱讀它的問題是: 如果self.activeRow是一個正常的變量,它不會更新,如果它是一個IntVar,那麼它不會被接受,因爲它不是一個int。那麼我怎麼才能讓它改變行呢? – Talisin 2012-04-14 10:39:12