Tkinter 标签位于框架的底部
Tkinter label go at the bottom of the frame
我使用 Tkinter 和包布局管理的 Python 小应用程序有点问题。我不明白为什么标签会出现在框架的底部。
代码如下:
class App:
def __init__(self, master):
frame = Frame(master)
frame.pack()
photo = PhotoImage(file="icone.gif")
self.label = Label(image=photo)
self.label.image = photo # keep a reference!
self.label.pack()
self.labelNet = Label(master, text='NetID:')
self.labelNet.pack()
self.netID = Entry(frame,width=20)
self.netID.pack()
self.password = Label(master, text='Password:')
self.password.pack()
self.password = Entry(frame, show="*", width=20)
self.password.pack()
self.install = Button(frame, text="Activer", command=self.install)
self.install.pack()
self.uninstall = Button(frame, text="Désactiver", command=self.uninstall)
self.uninstall.pack()
呼叫者:
root = Tk()
root.title("Title")
root.geometry("200x280")
app = App(root)
root.mainloop()
结果:
您知道问题出在哪里吗?
谢谢!
self.label = Label(image=photo)
...
self.labelNet = Label(master, text='NetID:')
...
self.password = Label(master, text='Password:')
您所有的标签都使用 master
作为它们的主标签,或者您没有提供主标签(在这种情况下它默认为根 window)。所有其他小部件都以框架作为它们的主人。这有效地使您拥有像这样的小部件层次结构:
root
frame
entry
entry
button
button
label
label
label
您应该让标签也以框架为主。
self.label = Label(frame, image=photo)
...
self.labelNet = Label(frame, text='NetID:')
...
self.password = Label(frame, text='Password:')
或者,或者,根本没有框架,让一切成为根的直接子代。
我使用 Tkinter 和包布局管理的 Python 小应用程序有点问题。我不明白为什么标签会出现在框架的底部。
代码如下:
class App:
def __init__(self, master):
frame = Frame(master)
frame.pack()
photo = PhotoImage(file="icone.gif")
self.label = Label(image=photo)
self.label.image = photo # keep a reference!
self.label.pack()
self.labelNet = Label(master, text='NetID:')
self.labelNet.pack()
self.netID = Entry(frame,width=20)
self.netID.pack()
self.password = Label(master, text='Password:')
self.password.pack()
self.password = Entry(frame, show="*", width=20)
self.password.pack()
self.install = Button(frame, text="Activer", command=self.install)
self.install.pack()
self.uninstall = Button(frame, text="Désactiver", command=self.uninstall)
self.uninstall.pack()
呼叫者:
root = Tk()
root.title("Title")
root.geometry("200x280")
app = App(root)
root.mainloop()
结果:
您知道问题出在哪里吗?
谢谢!
self.label = Label(image=photo)
...
self.labelNet = Label(master, text='NetID:')
...
self.password = Label(master, text='Password:')
您所有的标签都使用 master
作为它们的主标签,或者您没有提供主标签(在这种情况下它默认为根 window)。所有其他小部件都以框架作为它们的主人。这有效地使您拥有像这样的小部件层次结构:
root
frame
entry
entry
button
button
label
label
label
您应该让标签也以框架为主。
self.label = Label(frame, image=photo)
...
self.labelNet = Label(frame, text='NetID:')
...
self.password = Label(frame, text='Password:')
或者,或者,根本没有框架,让一切成为根的直接子代。