私はこのlinkのPythonコードの例に従っています。私の最終的な目標は、データベースクエリを使用して動的なページ数を作成しようとすることです。クエリはアイテムのリストを返し、それぞれをページとしてインスタンス化する辞書エントリを作成することができます。動的ページ作成tkinter
ここでは、数字のリストだけで辞書にインスタンス化されたPageクラスを作成することで作成しようとしましたが、StartPageの表示を得ることができません。 。私のソースコード:
class SeaofBTCapp(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(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
database_pages = [1, 2, 3, 4]
count = 0
for p in database_pages:
page_num = p
frame = Page(container, self)
self.frames[page_num] = frame
frame.grid(row=0, column=0, sticky="nsew")
count += 1
self.frames[count] = StartPage(container, self)
self.show_frame(count)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
class Page(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label = tk.Label(self, text="label for Page")
label.pack()
私はそれを辞書のエントリとして追加し、そのキーを呼び出そうとしました。エラーは表示されませんが、StartPageは表示されません。 StartPageを最初に表示するにはどうすればよいですか?これを達成するより良い方法はありますか?
EDIT
示唆したように、私は変更:
self.frames[count] = StartPage(container, self)
self.show_frame(count)
をする:
frame = StartPage(container, self)
self.frames[count + 1] = frame
frame.grid(row=0, column=0, sticky='nsew')
self.show_frame(count + 1)
助けてくれてありがとう!
ありがとうございます!うわー、私はそれをキャッチしていないと信じられない。欠落していたコマンドをクリアするには、最初のクラスの一番下にあるcontainer.pack()が必要でした。 – B3Caballero
@BenC:あなたのご意見は分かりません。あなたのコードはすでにコンテナの 'pack'を呼び出しています。コードに 'pack'コマンドがありません。 –
申し訳ありません、私は自分自身の前に飛び込んだ。それはcontainer.packではありませんでした。私は、forループの下のコードをグリッドへのスタートページを含めて作った。私のポストを更新しないでください。 – B3Caballero