Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么ttk.Button出现在主窗口中而不是tk.Toplevel?_Python_Tkinter - Fatal编程技术网

Python 为什么ttk.Button出现在主窗口中而不是tk.Toplevel?

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),

我有一个主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()
当用户单击位于主界面上的
显示帮助
按钮时,将出现一个新的
顶级
窗口。此窗口的
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()

为了重现您的问题,您能否提供一个可运行的简短示例?为了重现您的问题,您能否提供一个可运行的简短示例?