【发布时间】:2018-02-14 21:48:35
【问题描述】:
我正在创建一个在一个窗口中包含两个框架的程序。第一个有输入字段,第二个将创建一个图表。 我找到了一种从列表动态创建输入字段并相应地获取它们的值的方法,但我无法让它们显示在窗口上。当我运行程序时,它会显示一个空窗口。
我应该怎么做才能让标签和输入小部件显示在第一帧 (InputPage) 上?我尝试将“父母”更改为“自我”,但没有任何区别。我不太了解多框架应用程序中小部件的结构。
这是我的代码:
from tkinter import *
namesInput = ["first", "second", "third", "fourth", "fifth"]
entryInput = {}
labelInput = {}
root = Tk()
class ZorgplanGrafiek(Tk):
def __init__(self, *args, **kwargs):
Tk.__init__(self, *args, **kwargs)
container = Frame(self)
container.pack(side="top", fill="both", expand = True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
for F in (InputPage, GraphPage):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame(InputPage)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
class InputPage(Frame):
def __init__(self, parent, controller):
Frame.__init__(self,parent)
label = Label(self, text="Zorgplan input")
label.pack(pady=10,padx=10)
i = 0
for name in namesInput:
e = Entry(self)
entryInput[name] = e
lb = Label(self, text=name)
labelInput[name] = lb
i += 1
#def print_all_entries():
# for name in namesInput:
# print( entryInput[name].get())
class GraphPage(Frame):
def __init__(self, parent, controller):
Frame.__init__(self, parent)
label = Label(self, text="The graph will show here")
label.pack(pady=10,padx=10)
button = Button(self, text="Back to Home",
command=lambda: controller.show_frame(InputPage))
button.pack()
app = ZorgplanGrafiek()
app.mainloop()
【问题讨论】:
-
您正在创建两个窗口。一不为空。你问的是哪一个?
标签: python python-3.x tkinter widget