下面是我的Tkinter窗口之一作爲入口表單設計。它有許多行(通常由另一個函數定義)和一組由len(self.names)定義的列。TkInter發送字符串到IntVar
Tkinter Int和String變量正在被正確創建,但是當根據條目窗口小部件中的值設置Int的值時,它將拋出一個錯誤,指出int()的基數爲10的無效字面值:''。我知道你不能將一個字符串設置爲一個int,但即使在我嘗試設置該值之前,很明顯文本變量沒有正確鏈接到IntVar,因爲在其他窗口中,入口小部件具有默認值IntVar支持它的值爲0,在這種情況下,這不會發生。
你應該能夠運行下面的代碼,它是一個(主要)工作班級。
任何有識之士將不勝感激。
from Tkinter import *
class app:
def __init__(self):
self.getFiles()
def getFiles(self):
self.numHelidays = 2
root=Tk()
self.master=root
self.files = []
self.names = ("HELI", "DAY", "DATE (yyyymmdd)", "type or browse for group shapefiles", "type or browse for route shapefiles")
i = 0
for f in self.names:
self.fileLabel=Label(self.master,text=f)
self.fileLabel.grid(column=i, row=0)
i = i+1
for heliday in range(self.numHelidays):
self.files.append([])
col = 0
for column in self.names:
if col == 3 or col == 4:
self.fileEntry=Entry(self.master,width=60, textvariable = self.files[heliday].append(StringVar()))
else:
self.fileEntry=Entry(self.master,width=60, textvariable = self.files[heliday].append(IntVar()))
#self.files[heliday][col].set(self.fileEntry)
self.fileEntry.grid(column = col, row=heliday+1)
col = col+1
#now for 'next' button
self.submit = Button(self.master, text="Finish...", command=self.fileManager, fg="red")
self.submit.grid(row=(self.numHelidays)+2, column=0)
# self.quit = Button(self.master, text="Quit...", command=self.deleteData, fg="red")
# self.quit.grid(row=(self.numHelidays)+2, column=1)
def fileManager(self):
print self.files
for i in self.files:
for l in i:
print l.get()
app()
編輯:
現在是以這種形式。似乎試圖將字符串/ intvar追加到列表中,同時也試圖將其分配給textvariable不起作用,我必須在將其分配給textvariable之前創建字符串/ intvar,然後將其追加。我不明白爲什麼這應該工作,但上面沒有,因爲肯定它做同樣的事情。我猜Python只是在上面的腳本中以錯誤的順序執行操作。
if col == 3 or col == 5:
txt = StringVar()
self.fileEntry=Entry(self.master,width=60, textvariable = txt)
self.fileEntry.grid(column = col, row=heliday+1)
else col == 2:
txt = IntVar()
self.fileEntry=Entry(self.master,width=20, textvariable = txt)
self.fileEntry.grid(column = col, row=heliday+1)
self.files[heliday].append(txt)
self.files[heliday][col].set(txt.get())
col = col+1
這段代碼是如何解釋這個問題的?你在哪裏設置「相關IntVar的價值」?當它拋出錯誤時,錯誤是什麼? – 2014-11-14 13:33:39