我正在关注此link的Python代码示例。我的最终目标是尝试使用数据库查询创建动态数量的页面。查询将返回一个项列表,我可以创建一个字典条目,将每个项实例化为一个页面。
我试图在这里通过创建一个Page类来创建它,该类在字典中仅使用一个数字列表进行实例化,但是我似乎无法显示StartPage,所有显示的都是Page之一页面。我的源代码:
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?有没有更好的方法来实现这一目标?
修改
根据建议,我改变了:
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)
感谢您的帮助!
答案 0 :(得分:0)
创建grid
后您没有调用StartPage
,因此它将无形。创建StartPage
后添加以下内容:
start.grid(row=0, column=0, sticky="nsew")
你还有另外一个问题,就是你将StartPage
放在索引4处,但你已经在索引4处有一个框架。这个问题没有解决问题,但它会导致问题当你试图看到另一页时。