그래서 나는 도전적으로 이해할 수없는 것을 찾아 냈습니다. 도움이 필요합니다. 나는 두 개의 버튼을 모두 다음 프레임으로 보내고 그들은 잘 작동하지만, 창 크기를 조정할 때 그들은 같은 크기로 유지하고 왼쪽 상단 모서리에 머물러 있으며, 화면의 중앙에 자아를 배치하기를 원합니다. 성장에 대한 모범이 있다면, 그것은 또한 높이 평가 될 것이지만 반드시 필요한 것은 아닙니다. 또한 가능하다면 그리드를 고수하고 싶습니다. 난 columnconfigure를 시도하고 다른 프레임에 프레임을 배치, 아무것도 작동하지 않는 것. 이상하게도 tho 내가 자기와 용기를 교체하고 버튼에 자기를 떨어 뜨린다면 작동하지만 명령이 작동하지 않으면 누군가 나에게 이것을 설명하거나 내가 뭘 잘못하고 있는지에 대한 좋은 예를 들어 줄 수 있을까? 코드의창 크기에 따라 tkinter 격자 크기가 조정되지 않습니다.
샘플 :
import tkinter as tk
class MYapp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
container = tk.Frame(self)
container.grid(row = 0,column = 0, sticky = "nsew")
container.rowconfigure(0, weight = 1)
container.columnconfigure(0, weight = 1)
container.columnconfigure(1, weight = 1)
self.frames = {}
for FRAME in (N1, N2):
frame = FRAME(container, self)
self.frames[FRAME] = frame
frame.grid(row = 0, column = 0, sticky = "nsew")
self.show_frame(N1)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
class N1(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
a = tk.Button(self, text = "N1", command = lambda: controller.show_frame(N2))
a.grid(row = 0, column = 0, sticky = "nsew")
c = tk.Button(self, text = "N1", command = lambda: controller.show_frame(N2))
c.grid(row = 0, column = 1, sticky = "nsew")
class N2(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
b = tk.Button(self, text = "N2")
b.grid(row = 0, column = 0, sticky = "nsew")
if __name__ == "__main__":
app = MYapp()
app.mainloop()
이 해결 : 브라이언에 감사합니다. 답변이있는 업데이트 된 코드입니다.
import tkinter as tk
class MYapp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
container = tk.Frame(self)
container.pack(fill="both", expand=True)
container.rowconfigure(0, weight = 1)
container.columnconfigure(0, weight = 1)
self.frames = {}
for FRAME in (N1, N2):
frame = FRAME(container, self)
self.frames[FRAME] = frame
frame.grid(row = 0, column = 0, sticky = "nsew")
frame.rowconfigure(0, weight = 1)
frame.columnconfigure(0, weight = 1)
frame.columnconfigure(1, weight = 1)
self.show_frame(N1)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
class N1(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
a = tk.Button(self, text = "N1", command = lambda: controller.show_frame(N2))
a.grid(row = 0, column = 0, sticky = "nsew")
c = tk.Button(self, text = "N1", command = lambda: controller.show_frame(N2))
c.grid(row = 0, column = 1, sticky = "nsew")
class N2(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
b = tk.Button(self, text = "N2")
b.grid(row = 0, column = 0, sticky = "nsew")
if __name__ == "__main__":
app = MYapp()
app.mainloop()
당신은 그들이 같은 크기를 유지하고 왼쪽 상단 모퉁이에 머물 렀지 만 당신이 원하는 것을 진술하지 않았습니까? 그들은 중심에 있어야합니까? 창문으로 자라나요? 상단에있어? 바닥에 머물러 계세요? 중간에 여분의 공간을 넣으시겠습니까? –
내 사과, 내 질문을 업데이 트하겠습니다. 나는 그 (것)들을 중심에두기 바랐다. 또한 그들에게 성장한 모범이 도움이 될 것입니다. – kytexaranort