私は挑戦できない何かを見つけ出しました。私は、次のフレームにあなたを送る2つのボタンを持って、彼らはうまく動作しますが、私はウィンドウのサイズを変更するときに、彼らは同じサイズを維持し、左上隅にと私は彼らが画面の中心にそれらを置くしたい。もしそれらが成長しているという例があれば、それはまた評価されるが必要ではない。また、可能であればグリッドをつけたいと思います。 私はcolumnconfigureを試して、フレームを別のフレームに配置しましたが、何も動作していないようです。不思議なことに、もし私がコンテナを自己に置き換えてボタンを押したままにすると、それはうまく動作しますが、誰かがこれを私に説明するか、私が間違っていることについての良い例を教えてくれますか?コードのウィンドウサイズに基づいて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