-1
안녕 얘들 아 나는 두 클래스 모두 프레임을 생성해야한다. 첫 번째 프레임에는 프레임을 닫아야하는 버튼이 있습니다. 두 번째 프레임에는 단순히 레이블이 들어 있습니다. 내 코드는 먼저 버튼이있는 프레임을 만들어야하고 버튼을 누르면 두 번째 창이 나타나야합니다. 버튼을 누르면 버튼과 라벨이 포함 된 "병합"창이 생성됩니다. 파이썬 tkinter 2 프레임 병합
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
'root = tk.Tk()'를 생성하십시오. 'Frame'은 윈도우를 생성하지 않습니다 - 요소 만 그룹화합니다. 'Tk()'는 창을 생성합니다. 창을 닫으려면'root.destroy()'가 필요합니다. 위젯에 부모가 없으면'root'를 사용합니다.'Frame'도 위젯을 사용합니다. 'root'를 만들지 않으면 코드의 어딘가에 루트를 만들지 만 루트를 닫으려면'root'에 액세스 할 수 없습니다 – furas
BTW : 프레임을 닫으려면'self.destroy()'를 사용합니다 (하지만 윈도우를 닫지는 않습니다). Python 3을 사용한다면'tk.Frame .__ init __ (self)' – furas
@furas 대신에'super() .__ init __()'을 사용할 수 있고 Python2에서는'super (MyClassName, self) .__ init __()' – mikuszefski