[英]PYTHON TKINTER > e = Entry() > e.bind('<ENTER>', function)
我還不允許添加圖片來提問帖子。
下面的問題:
我的應用程序當前使用的是 window,它編碼在 class 中。
我的最終目標是在將字母和數字輸入到條目小部件時按 Enter,然后按 Enter,然后 function 將更新與我的主 window 中的 label 相關的文本。
詳細說明如下:
我不知道如何創建和輸入,然后綁定回車鍵,這樣當我運行我的應用程序時,我可以單擊該條目,輸入一個值並按回車鍵。
我看到很多按鈕引用,我可以讓按鈕工作,但我正在努力學習如何做事並且不想在這種情況下依賴按鈕。
我在其他一些帖子中看到,如果您使用條目 object 調用.get
,則 python 代碼將執行它並繼續。 我在 function 中使用打印語句進行了測試,我想在按下回車時調用,並且打印語句出現在終端中,然后我在輸入小部件中鍵入任何內容。 然后我嘗試輸入並按回車鍵,什么都不會發生。
作為一項規則,我應該放棄綁定 ENTER 鍵並堅持使用 tkinter 中的按鈕,還是有適當的方法來做到這一點? 在我的代碼示例中,您將看到up_R
是我在按Enter時嘗試執行的 function。 如果我使用up_R()
,它會立即執行。 如果我使用up_R
,則會收到 TCL 錯誤。
具體部分代碼位於以下:
def up_R():
print('Makes it here')
self.R.update_disp(self.e.get())
self.e.bind('<ENTER>',up_R)
如果需要幫助,完整的代碼如下:
#NOAA SPACE WEATHER CONDITIONS
from tkinter import *
class window:
def __init__(self):
#main window
self.window = Tk()
self.window.title('NOAA SPACE WEATHER CONDITIONS')
self.window.geometry('800x600')
#window organization
self.window.grid_rowconfigure(0, weight = 1)
self.window.grid_rowconfigure(1, weight = 1)
self.window.grid_columnconfigure(0, weight = 1)
self.window.grid_columnconfigure(1, weight = 1)
#temp entry frame
self.e = Entry(self.window)
self.e.grid(row = 1, column = 0, sticky=N)
self.e.insert(END, 'R entry')
#init class R
self.R = R()
#init class S
self.S = S()
#init class g
self.G = G()
#frame for RSG
self.frame = Frame(self.window)
self.frame.grid(row = 0, column = 0, columnspan = 2, padx=10, pady=10)
#disp class R
self.rf = Frame(self.frame, highlightbackground='black', highlightcolor='black', highlightthickness=1)
self.rf.pack(side = LEFT)
self.rl = Label(self.rf, text = self.R.dkey, bg='#caf57a')
self.rl.pack(side=TOP)
self.rl_lower = Label(self.rf, text= self.R.tile_text, bg='#caf57a')
self.rl.pack(side=BOTTOM)
#Value update methods
# self.R.update_disp(self.e.get())
# #action
def up_R():
print('Makes it here')
self.R.update_disp(self.e.get())
self.e.bind('<ENTER>',up_R())
#main window call - goes at end of class
self.window.mainloop()
class R:
def __init__(self):
d = {'R':'None','R1':'Minor','R2':'Moderate','R3':'Strong','R4':'Severe','R5':'Extreme'}
self.dkey = 'R'
self.tile_text = d[self.dkey]
print(d[self.dkey])
def update_disp(self, dkey):
self.dkey = dkey
class S:
d = {'S1':'Minor','S2':'Moderate','S3':'Strong','S4':'Severe','S5':'Extreme'}
pass
class G:
d = {'G1':'Minor','G2':'Moderate','G3':'Strong','G4':'Severe','G5':'Extreme'}
pass
t = window()
ENTER 應該用 Return 改變,並且 function 應該接受一個事件
另外,不要忘記在“類”中使用 self 在方法和 self.method 來調用它。
def up_R(self, event):
print('Makes it here')
self.R.update_disp(self.e.get())
self.rl.config(text=self.R.dkey)
self.e.bind('<Return>', self.up_R)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.