嘿伙计们,我必须创建一个框架。第一个包含一个应该关闭其框架的按钮。第二帧只包含一个Label。我的代码应首先使用按钮创建框架,当按下按钮时,应显示第二个窗口。会发生什么,当按下按钮时,"合并"创建包含按钮和标签的窗口。
import tkinter as tk
class Window1(tk.Frame):
def __init__(self):
tk.Frame.__init__(self)
self.grid()
self.btn = tk.Button(self,text = "button",command = self.run)
self.btn.grid(row = 0,column = 0)
def run(self):
tk.Frame.quit(self)
class Window2(tk.Frame):
def __init__(self):
tk.Frame.__init__(self)
self.grid()
self.label = tk.Label(self,text = "label ")
self.label.grid(row = 0,column = 0)
w = Window1()
w.mainloop()
v = Window2()
v.mainloop()
第一张照片是在按下按钮之前,按下按钮后的下一张照片。问题似乎tk.Frame.quit(self)
无法正常工作。我尝试了类似的关闭窗口的方法,例如:
tk.Frame.destroy(self)
但这对任何一方都没有帮助。
编辑:我通过从tk.TK而不是tk.Frame继承类来解决它
答案 0 :(得分:1)
Frame
不创建窗口 - 它只是组元素。 Tk()
创建窗口。
要关闭窗口,您必须destroy()
创建Tk()
对象。但是你不是手动创建它root = tk.Tk()
所以tkinter会自动创建它,但你无法访问此root
来关闭它。
如果窗口小部件没有父级,则它使用root
,而您的Frame
也会使用import tkinter as tk
class Window1(tk.Frame):
def __init__(self, master):
# send `root` to `Frame` as its parent
tk.Frame.__init__(self, master)
# `Frame` will keep `master as `self.master`
# so we don't have to do `self.master = master` manually
self.grid()
self.btn = tk.Button(self, text="Hello Button", command=self.run)
self.btn.grid(row=0, column=0)
def run(self):
# use `master` (`root`) to destroy it
self.master.destroy()
class Window2(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
self.grid()
self.label = tk.Label(self, text="Hello Label")
self.label.grid(row=0, column=0)
root = tk.Tk() # create main window as `root`
Window1(root) # send `root` to `Window1` and later to `Frame`
root.mainloop()
root = tk.Tk()
Window2(root)
root.mainloop()
。
<div class="form-group">
<input type="text"........../>
</div>