Python 为什么ttk.Button出现在主窗口中而不是tk.Toplevel?
我有一个主UI,其实例化如下:Python 为什么ttk.Button出现在主窗口中而不是tk.Toplevel?,python,tkinter,Python,Tkinter,我有一个主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),
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()
当用户单击位于主界面上的显示帮助
按钮时,将出现一个新的顶级
窗口。此窗口的Toplevel
包含两个框架:row=0
上的topFrame0
和row=1
上的topFrame1
。我在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()
一致
buttonFrame = ttk.Frame(...).grid()
您可以将None
分配给buttonFrame
,因为grid()
返回None
,所以您可以稍后使用ttk.Button(None,…)
并将按钮添加到主窗口
你需要
buttonFrame = ttk.Frame(...)
buttonFrame.grid()
为了重现您的问题,您能否提供一个可运行的简短示例?为了重现您的问题,您能否提供一个可运行的简短示例?