如何让框架在 tkinter 中达到顶层?

How to let the frame go top level in tkinter?

tkinter怎么让frame置顶?我尝试同时使用 grid 和 place,都没有用。 另外,我想在单击任何按钮让我 select 确认或取消时显示一个小浮动 window。你能告诉我如何在 tkinter

中创建浮点数 windows
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


请看一下代码,如果能给我一些建议,非常感谢

在任何地方调用 tkraise() 框架(在您的案例中是每个 Entry 小部件)您愿意框架上升到上方:

self.test_entry.bind("<FocusIn>", lambda event:self.numpad_frame.place(x=105,y=25), self.numpad_frame.tkraise())

Could you let me know how to create the float windows in tkinter?

您可以将 tkinter.messagebox 用于此目的。使用 messagebox.askokcancel 要求用户在确认或取消之间 select。

PS:尝试将框架放置在坐标处,使其不与 Entry 小部件重叠,就像您的情况一样,因为它构建的 UI 非常差。并且请在提问时提供minimal reproducible example