我有一个主UI,它实例化如下:
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
窗口的右下角!这怎么可能发生?
答案 0 :(得分:2)
排队
buttonFrame = ttk.Frame(...).grid()
您将None
分配给buttonFrame
,因为grid()
会返回None
,因此您稍后会ttk.Button(None, ...)
并向主窗口添加按钮。
你需要
buttonFrame = ttk.Frame(...)
buttonFrame.grid()