2017-04-17 77 views
0

我有一個標籤設置在一定的大小,但是當我運行我的程序時,主窗口不夠大,看不到整個標籤。 如何增加主窗口的大小?我嘗試過不同的選擇,但我沒有任何運氣。如何在Python中更改主Tkinter窗口的大小?

import win32com.client 
import os 
# import threading # use the Timer 
import tkinter 

from tkinter import Tk, Label, Button 

class myGUI: 

    def timer(self): 

     import pythoncom  
     pythoncom.CoInitialize() 

     outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI") 

     inbox = outlook.GetDefaultFolder(6) 



     messages = inbox.Items 
     message = messages.GetLast() 
     body_content = message.Subject # can be Body, To, REcipients, Sender, etc 


     self.answer_label['text'] = (body_content) # orginally used body_content.encode("utf-8") to fixed character encoding issue 


     self.master.after(20, self.timer) # after needs to be called from an existing widget such as master 
             # In this case, the after method is used to refresh the e-mails instead of threading 

    def __init__(self, master): 
     self.master = master 
     master.title("CheckStat") 


     self.answer_label = Label(master, text='', fg="light green", bg="dark green", font="Helvetica 16 bold italic") 
     self.answer_label.place(height=100, width=600) 

     self.timer() 


root = Tk() 
my_gui = myGUI(root) 
root.mainloop() 
+0

你有使用'.place()'經理? (你可能沒有)'.place()'忽略邊界和相對位置,你可能想使用其他窗口管理器('.grid()'和'.pack()',儘管前者會讓你受益更多學習並節省一些頭痛的問題 - 但請注意,這兩個**不能在同一個容器中使用(相反,Tk會嘗試在我們太陽的其餘時間解決它們))。 – Delioth

+0

不,我不必使用.place。我原本選擇這個,因爲我認爲這會給我更多的控制權。 – Prox

+0

它可能給予稍微更多的控制權,但你不想要更多的控制權。如果'.grid()'不能完全給你想要的東西,你可以移動到'.place()'來讓你的東西「只是工作」而不需要100% '對於那個具體的事情。但'.grid()'可能在60%的情況下可以準確地給出你想要的,'.pack()'將處理剩下的99%。當需要相對於整個窗口或其他元素進行定位時,'.place()'非常有用,但不能以'.grid()'方式進行定位,並且對於重疊元素也很有用。 – Delioth

回答

1

如果使用packgrid代替place,窗口就會自動擴大或縮小以適合標籤的內容。如果有的話,最好使用place

如果要使用place,可以使用根窗口的geometry方法爲窗口指定顯式大小。

例如,爲了使根窗口是600x100的,你應該加入這一行:

root.geometry("600x100") 
+0

我想知道root.geometry()。我已經嘗試過,它似乎沒有做任何事情。 – Prox

+0

@Prox:它絕對有所作爲。它強制根窗口的大小爲指定的大小。 –