2016-03-30 19 views
-1

Ich arbeite an einem Human Machine Interface Design ... Ich habe ein Array von Etiketten erstellt ... Ich habe das gleiche Etikett und Eigenschaften für alle Etiketten im Array verwendet, aber wenn ich executive mein Code, Größe der Etiketten miteinander nicht übereinstimmen ....Tkinter Etikettengröße nicht übereinstimmend

Dies ist mein Code ....

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() 

Antwort

2

Sie sind die sticky Option nicht verwenden, wenn Sie grid nennen. Ohne sie sind die Etiketten nur groß genug, um den Text zu enthalten. Wenn Sie sie die Tabellenzellen füllen möchten, verwenden Sie so etwas wie sticky=N+S+E+W

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

By the way,

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

Du self.company_name-None Einstellung, weil das ist, was pack zurückkehrt. Eine bewährte Methode von tkinter besteht darin, die Erstellung des Widgets von der Anzeige auf dem Bildschirm zu trennen:

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