2015-12-18 89 views
0

如果我手動放大窗口,我會看到文本,所以文本就在那裏! (在標籤上)但如果沒有放大窗口我看不到,我只看到一塊標籤爲什麼文本不會顯示在標籤上?

我該如何解決?我必須調整大小嗎?

我試過改變字體大小,標籤的大小和其他一些東西,我甚至無法解決問題。

這是代碼:

from Tkinter import * 
import ttk 
import time 
import threading 

def start(): 
    start_stop.config(text="QUIT", command=stop, image=photo2) 
    thread = threading.Thread(target=progBar, args=()) 
    thread.daemon = True 
    thread.start() 

def progBar(): 
    for i in xrange(300): 
     if i < 50: 
      lbl1.config(height=0, width=4, font=('times', 400, 'bold'), 
         text="AAAA!!")  
      lbl1.config(fg='black') 

      if i % 5: 
       lbl1.config(bg='white') 
      else: 
       lbl1.config(bg='red') 

     if i == 50: 
      lbl1.destroy() 

     if i >= 200: 
      s = ttk.Style() 
      s.theme_use('clam') 
      if i % 5: 
       s.configure("red.Horizontal.TProgressbar", 
          foreground='#205F8C', background='#205F8C') 
      else: 
       s.configure("red.Horizontal.TProgressbar", 
          foreground='red', background='red') 
      pbar_det.config(style="red.Horizontal.TProgressbar") 

     pbar_det.step(0.33) 
     master.update() 
     # Busy-wait 
     time.sleep(0.1) 

    master.destroy() 

def stop(): 
    master.destroy() 

master = Tk() 
photo1 = PhotoImage(file="Press1.gif") 
photo2 = PhotoImage(file="Press2.gif") 
ws = master.winfo_screenwidth() # width of the screen 
hs = master.winfo_screenheight() # height of the screen 

width = ws 
height = 120 
x = ws-width # Window's coords 
y = hs-height 

start_stop = Button(master, text='START', command=start, image=photo1) 
start_stop.grid(row=0, column=1, pady=2, padx=2, sticky=E+W+N+S) 

pbar_det = ttk.Progressbar(master, orient="horizontal", length=ws-450, 
          mode="determinate") 
pbar_det.grid(row=0, column=0, pady=2, padx=2, sticky=E+W+N+S) 

lbl1 = Label(master) 
lbl1.grid(row=0, column=1, pady=2, padx=2) 
lbl2 = Label(master) 
lbl2.grid(row=0, column=1, pady=2, padx=2) 

master.geometry('%dx%d+%d+%d' % (width, height, x, y)) 
master.mainloop() 
+0

你做了什麼來調試呢?你有沒有證實你的寬度和高度的計算是你期望的?另外,你是否有意將兩個按鈕加兩個圖像放在同一個地方(第0行,第1列)? –

回答

0

嘗試固定標籤的左側內的文本。

lbl1.config(anchor="nw") # nw = north-west = top left 
+0

感謝您的回答!但這並不能解決問題。問題完全一樣 – Krowa

0

我看到在代碼中的至少四個方面的問題:

  • 你正迫使小部件的尺寸到一個特定的高度,當你調用master.geometry(...)。這可以防止窗口增大或縮小以適應內部小部件
  • 您指定了一個非常大的字體(400點),它不適合您選擇的高度。由於字體的大小與您給出的空間相比(通過明確設置窗口的高度),您看到的是所有字體中字母上方的自然空白)。
  • 您正在將兩個標籤和一個按鈕放在同一行和列的對方頂部
  • 您正在使用線程。 Tkinter不是線程安全的。你的代碼可能工作,但它可能不會。

如果您刪除對master.geometry()的呼叫,該窗口將展開以適應文本的高度。或者,你不能使字體如此之大。

相關問題