[英]Labels appearing over Entry's in Tkinter
當我運行以下代碼時,創建的標簽顯示在Entry框的頂部,就像它們沒有被添加到同一網格一樣。
class Application(Frame):
def __init__(self,master):
super(Application,self).__init__(master)
self.grid()
self.new_intervals()
def new_intervals(self):
self.int_label = Label(text="Interval Name")
self.int_label.grid(row=0, column=0,sticky=W)
self.int_time_label = Label(text="Time (HH:MM:SS)")
self.int_time_label.grid(row=0, column=1,sticky=W)
self.box1 = Entry(self)
self.box1.grid(row=1,column=0,sticky=W)
self.box2 = Entry(self)
self.box2.grid(row=1,column=1,sticky=W)
self.box3 = Entry(self)
self.box3.grid(row=2,column=0,sticky=W)
self.box4 = Entry(self)
self.box4.grid(row=2,column=1,sticky=W)
root = Tk()
root.title("Interval Timer")
root.geometry("400x500")
app=Application(root)
root.mainloop()
我知道我可以在循環中添加這些框,但是,如果沒有循環,我無法讓它工作
因此,因為標簽和應用程序框架位於主窗口的同一行中,並且因為標簽默認位於垂直中心,所以它們看起來位於條目窗口小部件的中間。
我假設您打算將標簽作為框架的子項,因此您需要在創建它們時將“self”指定為第一個參數:
self.int_label = Label(self, text="Interval Name")
...
self.int_time_label = Label(self, text="Time (HH:MM:SS)")
我還建議將特定主窗口的所有網格語句分組在一起,這樣就可以更容易地看到窗口小部件的組織。 根據我的經驗,這使代碼更易於閱讀和維護。
例如:
self.int_label = Label(...)
self.int_time_label = Label(...)
self.box1 = Entry(...)
...
self.int_label.grid(...)
self.int_time_label.grid(...)
self.box1.grid(...)
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.