私持っている私は(他のフレームをオーバーラップ以上)の問題もなくページを変更することができ、次のコード:Pythonの3 - Tkinterの変更ページのパスの余分なパラメータ
class HFlair(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
container = tk.Frame(self)
container.pack(side="top", fill="both", expand=True)
container.grid_rowconfigure(10, weight=1)
container.grid_columnconfigure(10, weight=1)
self.frames = {}
for F in (StartPage, PageOne, PageTwo, PageThree):
page_name = F.__name__
frame = F(parent=container, controller=self)
self.frames[page_name] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame("StartPage")
def show_frame(self, page_name):
'''Show a frame for the given page name'''
frame = self.frames[page_name]
frame.tkraise()
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
self.title=tk.Frame(self)
self.title.pack(side="top")
self.menu=tk.Frame(self)
self.menu.pack(side="top")
self.sub_title=tk.Frame(self)
self.sub_title.pack(side="top")
self.app1=tk.Frame(self)
self.app1.pack(side="left")
label = tk.Label(self.title, text="HFlair Home", font=TITLE_FONT)
label.pack(side="top", fill="x", pady=10)
button1 = tk.Button(self.menu, text="Membri",command=lambda: self.controller.show_frame("PageOne"))
button2 = tk.Button(self.menu, text="Spese",command=lambda: self.controller.show_frame("PageTwo"))
button3 = tk.Button(self.menu, text="Nuovo Membro",command=lambda: self.controller.show_frame("PageThree"))
button1.pack(side="left")
button2.pack(side="left")
button3.pack(side="left")
label1 = tk.Label(self.sub_title, text="Membri che non hanno pagato l'iscrizione:", font=text_font)
label1.pack(side="top", fill="x", pady=10)
c=table(self.app1,self.controller,'home')
私は最初のものに似た複数のページを持っています、私はちょうどほぼ同じなので、コードをコピーしていない。
あなたは、私がクリック時に私がページを変更する別のボタンを持って見ることができる場合は、次の
tk.Button(self.menu, text="Spese",command=lambda: self.controller.show_frame("PageTwo"))
を今私の問題は、私は私を返す機能整数を持っていると私は、この値を渡して新しいページを呼び出す必要があるということです。 私は他のすべてを呼び出すために使用するのと同じ方法でページを呼び出そうが、私はそれは、余分な値(整数)で動作することができません。
self.controller.show_frame("PageTwo",4)
問題があるたびにそのこと新しいページのクラスのオプションとして新しいパラメータがありました。私のコードはHflairクラスで失敗します。
私はメインクラス(クラスHflair)でオプションの追加パラメータを渡そうとしますが、私のコードはまだ失敗します。
誰かが、1ページ分の余分なパラメータを紹介する方法を教えてください。
私はちょうど私のページのコールに新しいパラメータを追加すると、私はこの行にこのエラーが表示されます。
frame = F(parent=container, controller=self)
init() missing 1 required positional argument: 'attr'
私はこのようにオプションパラメータを追加する場合:
frame = F(parent=container, controller=self, attr=None)
このエラーが表示されます:
init() got an unexpected keyword argument 'attr'
私はいくつかばかげたミスをしていると思うが、どこに行けないのだろうか:
申し訳ありませんが、私はTkinterの新しいです。あなたは余分な引数で関数を呼び出す場合
'show_page'に
、その後、必要のない引数をshow_frameするために同様に使用?他のページが既に作成されていることは承知していますか?この価値をどのように期待していますか? –
フレームの切り替えに関するその他の質問をすべて読んだことがありますか?ここから始めてください:http://stackoverflow.com/a/7557028/7432 –
こんにちは@BryanOakleyので、ページは作成されていましたが、黒で作成されています。私は何をしたいのかの例を作っています。私はDB内のユーザーが違うので、ページとユーザーIDを渡し、DBからすべての情報を動的に取得します。ユーザープロフィール!私は間違っているのですか? –