【问题标题】:Tkinter Top Level window SizingTkinter 顶层窗口大小
【发布时间】:2015-04-02 23:26:54
【问题描述】:

我一直在网上寻找一种方法来调整 tkinter 中 TopLevel() 窗口的大小。我阅读了文档并一直在查看effbot.org's 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 来工作......

另外,通过定义和顶层创建新窗口的最佳方法是什么?我想要的只是一个弹出窗口,里面有一些格式化的文本。

【问题讨论】:

  • 如果你想要的只是一个带有一些文本的弹出窗口,为什么不让tkinter自动设置大小呢?它会调整窗口的大小以适应其内容。
  • 这对我来说看起来不太对劲。我只是想调整它的大小,如果我想要更大的窗口,那么顶层是创建新窗口的最佳方式吗?
  • 如果你硬编码大小,如果你有不同的字体或不同的分辨率,它会破坏

标签: python tkinter resize window toplevel


【解决方案1】:

以下创建一个根窗口,然后将其大小设置为 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() 设置窗口size to) 屏幕的宽度,窗口的边框将刚好在屏幕的可见区域之外。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多