2015-04-02 61 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()设置窗口大小)屏幕的宽度,窗口的边框就在屏幕的可见区域之外。