簡體   English   中英

為什么ttk.Button而不是tk.Toplevel出現在主窗口中?

[英]Why does ttk.Button appears in the main window instead of tk.Toplevel?

我有一個主用戶界面,其實例化如下:

class MyApp(ttk.Frame):
    def __init__(self, master):
        ttk.Frame.__init__(self, master)
        (...)

    def make_gui(self):
        (...)
        self.helpButt = ttk.Button(self.InnerRightFrm2, padding=(0, 0),
                                   text='Help', image=help_icon
                                   compound='left', command=self.show_help)
        (...)

def main():
    root = tk.Tk()
    root.title('Myapp')
    root.columnconfigure(0, weight=1)
    root.rowconfigure(0, weight=1)
    root.resizable(True, True)
    root.update()
    gui = MyApp(root)
    gui.mainloop()

當用戶單擊主界面上的Show help按鈕時,將出現一個新的Toplevel窗口。 所述Toplevel該窗口的包含兩幀: topFrame0row=0topFrame1row=1 我在topFrame1內創建第三個框架,以將“關閉”按鈕放入其中。這是我的操作方法:

def show_help():
    top_win = tk.Toplevel()
    top_win.title('Help')
    top_win.resizable(0, 0)

    topFrame0 = ttk.Frame(top_win, borderwidth=2, relief='groove')
    topFrame0.grid(row=0, column=0, sticky='nsew')
    topFrame1 = ttk.Frame(top_win, borderwidth=2, relief='flat')
    topFrame1.grid(row=1, column=0, sticky='nsew')
    buttonFrame = ttk.Frame(topFrame1, borderwidth=2, relief='groove').grid()
    ttk.Button(buttonFrame, padding=(0, 2), text='Close', command=top_win.destroy).grid(sticky='e')

但是,不是出現在“ Toplevel窗口的右底部(屏幕快照中的紅色箭頭),而是“關閉”按鈕出現在MyApp主窗口的右下角! 這怎么可能發生?

在此處輸入圖片說明

排隊

buttonFrame = ttk.Frame(...).grid()

您將None分配給buttonFrame因為grid()返回None所以您稍后ttk.Button(None, ...)並將按鈕添加到主窗口。

你需要

buttonFrame = ttk.Frame(...)
buttonFrame.grid()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM