[英]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
該窗口的包含兩幀: topFrame0
上row=0
和topFrame1
上row=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.