Tkinter 顶层窗口大小调整

3

我一直在网上寻找关于如何调整tkinter中TopLevel()窗口大小的方法。我已经阅读了文档并查看了effbot.org的tkinterbook,我看到了选项,但似乎无法使它们起作用。

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的东西工作...

此外,通过定义和toplevel创建新窗口是最好的方法吗?我想要的只是一个弹出窗口,其中包含一些格式化的文本。


如果你只想要一个带有一些文本的弹出窗口,为什么不让 tkinter 自动设置大小呢?它会根据内容自动调整窗口的大小。 - TigerhawkT3
这看起来不太对劲。如果我想要更大的窗口,我只是想调整它,那么使用顶级创建一个新窗口会是最好的方式吗? - Stagnent
如果您硬编码了大小,它将会在不同字体或不同分辨率下出现问题。 - stark
1个回答

7
以下代码创建一个根窗口,然后将其大小设置为400x400,接着创建一个“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()方法对frame进行打包时,top2会自动调整以适应frame的大小。
使用geometry()方法设置AxB的大小将得到与将AxB小部件放置在动态大小窗口中相同大小的窗口。也就是说,如果插入一个宽度等于屏幕宽度的小部件(或使用geometry()方法来设置窗口大小),则窗口的边框将刚好位于屏幕可见区域之外。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接