Python tkinter 2帧合并在一起
嘿,伙计们,我必须学习两个都能创建框架的类。第一个包含一个按钮,用于关闭其框架。第二帧仅包含一个标签。我的代码应该首先用按钮创建框架,当按下按钮时,第二个窗口应该显示出来。当按下按钮时,会创建一个包含按钮和标签的“合并”窗口Python tkinter 2帧合并在一起,python,tkinter,Python,Tkinter,嘿,伙计们,我必须学习两个都能创建框架的类。第一个包含一个按钮,用于关闭其框架。第二帧仅包含一个标签。我的代码应该首先用按钮创建框架,当按下按钮时,第二个窗口应该显示出来。当按下按钮时,会创建一个包含按钮和标签的“合并”窗口 import tkinter as tk class Window1(tk.Frame): def __init__(self): tk.Frame.__init__(self) self.grid() self.b
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
Frame
不创建窗口-它只对元素进行分组<代码>Tk()创建窗口
要关闭窗口,您必须destroy()
通过Tk()
创建对象。但是您没有手动创建它,因此tkinter会自动创建它,但是您没有访问此root
的权限来关闭它
若小部件并没有父项,那个么它将使用根
,而您的框架也会这样做
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()
创建root=tk.tk()
<代码>框架
不创建窗口-它只对元素进行分组<代码>Tk()创建窗口。若要关闭窗口,则需要root.destroy()
。若小部件并没有父项,那个么它也会使用root
-Frame
。如果您不创建根目录
,则它将在代码中的某个位置创建根目录,但您无权访问根目录
来关闭它。另外,要关闭框架,请使用self.destroy()
(但它不会关闭窗口)。如果你使用Python3,那么你可以使用super()。\uu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
在Pyhton 3中,您不必使用类名,但在Python 2中,您仍然需要使用类名,这样您就可以保留旧方法:)@furas…这样您就可以保留旧方法。。。如果你改变的话,它的行为会有所不同。