
如何讓框架在 tkinter 中達到頂峰?我嘗試同時使用網格和位置,兩者都沒用。另外,我想在單擊任何按鈕讓我選擇確認或取消時顯示一個小的浮動視窗。你能告訴我如何在 tkinter 中創建浮動視窗嗎
class MYGUI():
def __init__(self, root) -> None:
self.root = root
self.btn_list_names = list(range(9,-1,-1)) ['.','←']
self.btn_list_btns = []
self.btn_list_cmd={
9:self.btn_9,
8:self.btn_8,
7:self.btn_7,
6:self.btn_6,
5:self.btn_5,
4:self.btn_4,
3:self.btn_3,
2:self.btn_2,
1:self.btn_1,
0:self.btn_0,
'.':self.btn_dot,
'←':self.btn_delete,
}
self.numpad_frame = Frame(self.root,width=200,height=250,bg='blue')
self.numpad_create()
def btn_9(self):
self.test_entry.focus_get().insert(END,'9')
def btn_8(self):
self.test_entry.focus_get().insert(END,'8')
def btn_7(self):
self.test_entry.focus_get().insert(END,'7')
def btn_6(self):
self.test_entry.focus_get().insert(END,'6')
def btn_5(self):
self.test_entry.focus_get().insert(END,'5')
def btn_4(self):
self.test_entry.focus_get().insert(END,'4')
def btn_3(self):
self.test_entry.focus_get().insert(END,'3')
def btn_2(self):
self.test_entry.focus_get().insert(END,'2')
def btn_1(self):
self.test_entry.focus_get().insert(END,'1')
def btn_0(self):
self.test_entry.focus_get().insert(END,'0')
def btn_dot(self):
self.test_entry.focus_get().insert(END,'.')
def btn_delete(self):
value = self.test_entry.focus_get().get()
self.test_entry.focus_get().delete(0,END)
self.test_entry.focus_get().insert(END,value[:-1])
def setup(self):
self.root.geometry('1068x681 10 10')
self.test_entry = Entry(self.root)
self.test_entry.place(x=0,y=0,width=100,height=20)
self.test_entry.bind("<FocusIn>", lambda event:self.numpad_frame.place(x=105,y=25))
self.test_entry1 = Entry(self.root)
self.test_entry1.place(x=0,y=25,width=100,height=20)
self.test_entry1.bind("<FocusIn>",lambda event:self.numpad_frame.place(x=105,y=45))
self.test_entry2 = Entry(self.root)
self.test_entry2.place(x=105,y=0,width=100,height=20)
self.test_entry2.bind("<FocusIn>", lambda event:self.numpad_frame.place(x=205,y=25))
self.test_entry3 = Entry(self.root)
self.test_entry3.place(x=105,y=25,width=100,height=20)
self.test_entry3.bind("<FocusIn>",lambda event:self.numpad_frame.place(x=205,y=45))
def numpad_create(self):
sr,sc=0,0
init_sc = sc
for b in self.btn_list_names:
cmd = self.btn_list_cmd[b]
Button(self.numpad_frame, text=b, width=5,command=cmd).grid(row=sr,column=sc)
sc = 1
if sc>=init_sc 3:
sr =1
sc= init_sc
請看一下代碼,如果能給我一些建議,非常感謝
uj5u.com熱心網友回復:
在任何地方呼叫tkraise()框架(在您的情況下為每個條目小部件),您愿意框架高于:
self.test_entry.bind("<FocusIn>", lambda event:self.numpad_frame.place(x=105,y=25), self.numpad_frame.tkraise())
你能告訴我如何在 tkinter 中創建浮動視窗嗎?
您可以為此目的使用tkinter.messagebox。使用messagebox.askokcancel要求用戶在確認或取消之間進行選擇。
PS:嘗試將框架放置在坐標上,使其不與 Entry 小部件重疊,就像您的情況一樣,因為它構建了一個非常糟糕的 UI。當您提出問題時,請提供一個最小的可重現示例。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/452600.html
