我想在Python中使用Tkinter模塊創建GUI,其中一部分涉及給用戶兩個射頻盒的選項,並選擇他們想要的選項。根據他們打勾的方塊,它會運行不同的函數,返回不同的結果 - 然後我想在窗口類之外使用結果。但我不知道如何將價值從課堂內部傳遞到課堂外;我相信它非常簡單,但我無法爲我的生活工作。從Tkinter中的射頻盒獲取價值 - Python
我當前的代碼是:
class BatchIndiv():
def __init__(self, master):
self.master=master
self.startwindow()
self.b=0
def startwindow(self):
self.var1 = IntVar()
self.textvar = StringVar()
self.Label1=Label(self.master, text="Batch or indivdual import?")
self.Label1.grid(row=0, column=0)
self.Label2=Label(self.master, textvariable=self.textvar)
self.Label2.grid(row=2, column=0)
self.rb1 = Radiobutton(self.master, text="Batch", variable=self.var1,
value=1, command=self.cb1select)
self.rb1.grid(row=1, column=0, sticky=W)
self.rb2 = Radiobutton(self.master, text="Individual", variable=self.var1,
value=2, command=self.cb1select)
self.rb2.grid(row=1, column=1, sticky=W)
self.Button1=Button(self.master, text="ok", command=self.ButtonClick)
self.Button1.grid(row=1, column=2)
def ButtonClick(self):
if (self.var1.get())==1:
b=BatchImport()
return b
self.master.quit()
self.master.destroy()
elif (self.var1.get())==2:
b=IndivImport()
return b
self.master.quit()
self.master.destroy()
else: pass
def cb1select(self):
return self.var1.get()
#End of class definition.
#Code:
root=Tk()
window=BatchIndiv(root)
b=BatchIndiv.ButtonClick.b
root.mainloop()
....
對待BatchImport和IndivImport用作黑盒子,它們只是返回整數值,這是我分配給變量B的內部ButtonClick()。我需要這個值來做一些低於root.mainloop()的東西,(即......的地方),但我不知道如何得到它。 Tkinter真的很刺激,特別是因爲每個人都有不同的處理方法,所以在線文檔是不一樣的 - 試着做各種各樣的文檔,它給了我更多可愛的錯誤信息。
任何和所有幫助,將不勝感激。
PS - 當按下按鈕時如何關閉窗口,還是將值b發送回代碼的其餘部分,而不是完全退出python?正如你可以看到我嘗試使用.quit()和.destroy(),但沒有運氣。
是的,這正是我最終做的。謝謝。 –