2016-03-30 76 views
-1

我正在製作人機界面設計... 我已經創建了一個標籤數組...我已經對數組中的所有標籤使用了相同的標籤和屬性,但是當我執行我的代碼,標籤的尺寸不相互匹配....Tkinter標籤大小不匹配

這是我的代碼....

from tkinter import *  
import time 

root = Tk() 

class Clock: 
    def __init__(self): 
     self.time1 = '' 
     self.time2 = time.strftime('%H:%M:%S') 
     self.mFrame = Frame() 
     self.mFrame.pack(side=TOP,fill=X) 

     self.bottomFrame = Frame() 
     self.bottomFrame.pack(side=BOTTOM,fill=BOTH) 

     root.title('HUMAN MACHINE INTERFACE') 

     self.company_name=Label(self.mFrame, text='Host Company Name', font=('Arial',24,'bold','underline'),bg='white',relief=RAISED).pack(fill=X) 

     self.machine_name=Label(self.mFrame, text='Machine name', font=('Arial',24,'bold','underline'),bg='yellow',relief=RAISED).pack(fill=X) 

     self.my_company_name=Label(self.mFrame, text='SYNERGY AUTOMATION', font=('Arial',24,'bold','underline'),relief=SUNKEN).pack(side=LEFT) 

     self.watch = Label(self.mFrame, text=self.time2, font=('times',24,'bold'),relief=SUNKEN) 
     self.watch.pack(side=RIGHT) 

     self.clock() #first call it manually 

     num=['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16',] 
     r=0 
     c=0 

     for i in num: 
      Label(self.bottomFrame, text=i,bg='red',fg='white',font=(34),padx=50,pady=20,relief=SUNKEN).grid(row=r,column=c) 
      c = c + 1 
      if c == 4 or c == 8: 
       c=0 
       r=r+1 




    def clock(self): 
     self.time2 = time.strftime('%H:%M:%S') 
     self.watch.configure(text=self.time2) 
     self.mFrame.after(200, self.clock) #it'll call itself continuously 

obj1 = Clock() 
root.mainloop() 

回答

2

您沒有使用sticky選項,當你調用grid。沒有它,標籤只能夠包含文本。如果你想他們填寫表格單元格,使用類似sticky=N+S+E+W

Label(...).grid(... sticky=N+S+E+W) 

順便說一句,

self.company_name=Label(...).pack(fill=X) 

要設置self.company_nameNone,因爲這是pack回報。 tkinter的最佳做法是將窗口部件的創建與屏幕上的佈局分開:

self.company_name=Label(...) 
... 
self.company_name.pack(fill=X)