コードで分かるように、MainWindowでは青色と緑色のボックスが表示され、もう一方のOntopが表示され、SecondMainWindowには赤色と黄色のボックスが表示されます。彼らは彼らのために必要があるように、コードを実行することによって、あなたは残るMainWindow
すべてのフレームにlogin
窓からそれを見ることができる唯一のMainWindow
と上にあるSecondMainWindow
しかし、あなたがSecondMainWindow
のFAMEにMainWindow
から行くとき、問題が解決しませんあなたはどちらの窓に混じっているのですか?さまざまな色に背景をMainWindow
とSecondMainWindow
に設定して、どのフレームを表示するかをさらに深く理解しています。唯一self
はあなたが私はこの問題を解決する方法を、それはレイアウトに変更使用して、単に自己を見ることができるように フレームを取り除くにはどうしたらいいですか、別のフレームを表示したいときにフレームに何が置かれますか?
を使用している?と
import tkinter as tk
class start(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.frame = login()
self.frame.grid()
def change(self, frame):
self.frame.grid_forget()
self.frame = frame()
self.frame.grid()
class login(tk.Frame):
def __init__(self, master=None, **kwargs):
tk.Frame.__init__(self, master, **kwargs)
self.master.geometry('300x300')
self.master.configure(bg='orange')
button1 = tk.Button(self.master, text='New Frame', command = self.ChangeFrame).grid(row=0,column=0)
def ChangeFrame(self):
self.master.change(MainWindow)
class MainWindow (tk.Frame):
def __init__(self, master=None, **kwargs):
tk.Frame.__init__(self, master, **kwargs)
self.master.geometry('300x300')
self.master.configure(bg='white')
self.master.grid_rowconfigure(0, weight=2)
self.master.grid_rowconfigure(1, weight=3)
self.master.grid_columnconfigure(0, weight=1)
Frame1 = tk.Frame(self.master, background='blue', bd=1, relief='sunken')
Frame1.grid(row=0,column=0,padx=10,pady=10,sticky='nsew')
Frame2 = tk.Frame(self.master, background='green', bd=1, relief='sunken')
Frame2.grid(row=1,column=0,padx=10,pady=10,sticky='nsew')
button1 = tk.Button(Frame1, text='New Frame', command = self.ChangeFrame).grid(row=0,column=0)
def ChangeFrame(self):
self.master.change(SecondMainWindow)
class SecondMainWindow (tk.Frame):
def __init__(self, master=None, **kwargs):
tk.Frame.__init__(self, master, **kwargs)
self.master.geometry('300x300')
self.master.configure(bg='grey')
self.master.grid_rowconfigure(0, weight=1)
self.master.grid_rowconfigure(1, weight=1)
self.master.grid_columnconfigure(0, weight=1)
self.master.grid_columnconfigure(1, weight=1)
Frame3 = tk.Frame(self.master, background='yellow', bd=1, relief='sunken')
Frame3.grid(row=1,column=1,padx=10,pady=10,sticky='nsew')
Frame4 = tk.Frame(self.master, background='red', bd=1, relief='sunken')
Frame4.grid(row=0,column=1,padx=10,pady=10,sticky='nsew')
button1 = tk.Button(Frame4, text='New Frame', command = self.ChangeFrame).grid(row=0,column=0)
def ChangeFrame(self):
self.master.change(MainWindow)
app = start()
app.mainloop()
bigFrame> smallFrameが必要な場合は、小さなフレームにマスターとしてbigFrameを提供する必要があります: 'smallFrame(bigFrame)'。あなたの場合: 'self.frame = login_window(self)' – Novel
アプリケーションが起動したときにログインウィンドウを開いているという点で、それはどのように機能しますか? –
私はそのことを具体的には意味しませんでした、私は一般的に意味します。それらのすべては、単にマスターとして「自己」を使用する必要があり、それが完了したら、あなたはそれを望む方法であなたのレイアウトを修正する必要があります。 – Novel