2015-04-02 97 views
0

我一直在尋找所有的網絡試圖找到一種方法來在tkinter中設置一個TopLevel()窗口。我閱讀了文檔,並一直在尋找effbot.org's tkinterbook。我看到選項,但我似乎無法讓他們工作。Tkinter頂級窗口調整

def test(): 
    top = Toplevel() 
    top.title("test") 

    msg = Message(top, text="test") 
    msg.pack(pady=10, padx=10) 


def test1(): 
    top = Toplevel() 
    top.title("test1") 

    msg = Message(top, text="test1") 
    msg.pack(pady=10, padx=10) 

我知道有heightwidth選項,並也有root.geometry。不過,我似乎不能得到任何東西與TopLevel工作...

此外,是通過定義和頂層創建一個新窗口的最佳方式?我想要的是一個彈出窗口,其中帶有一些格式化的文本。

+0

如果你想要的只是一個帶有文本的彈出窗口,爲什麼不讓'tkinter'自動設置大小呢?它會調整窗口的大小以適應其內容。 – TigerhawkT3 2015-04-02 23:29:38

+0

它只是不正確的我。我只想調整它,如果我想要更大的窗口,最高層是創建新窗口的最佳方式? – Stagnent 2015-04-02 23:31:39

+0

如果你硬編碼的大小,它會打破,如果你有不同的字體或不同的分辨率 – stark 2015-04-02 23:41:41

回答

3

下面創建一個根窗口然後並將其大小設置400×400,然後創建一個Toplevel插件,並將其大小到500x100:

>>> import tkinter as tk 
>>> root = tk.Tk() 
>>> root.geometry('400x400') 
'' 
>>> top = tk.Toplevel() 
>>> top.geometry('500x100') 
'' 

另一種選擇是使用一個容器插件,像一個CanvasFrame ,將您想要的尺寸放入您想要使用的窗口中。然後,你可以把其他物體進入這個容器:

>>> top2 = tk.Toplevel() 
>>> frame = tk.Frame(top2, width=100, height=100) 
>>> frame.pack() 

當你pack()frametop2會自動調整以適應frame的大小。

使用geometry()的大小AXB產生相同的大小窗口設置爲放置AXB工具到一個動態大小的窗口 - 也就是說,如果你把一個小部件(或使用geometry()設置窗口大小)屏幕的寬度,窗口的邊框就在屏幕的可見區域之外。