【问题标题】:Resize Tkinter Window FROM THE RIGHT (python)从右侧调整 Tkinter 窗口的大小(python)
【发布时间】:2011-07-29 07:51:12
【问题描述】:

我不知道如何表达这个......

我有一个 Tkinter 窗口,当按下按钮时我需要隐藏这个窗口的一半。 但是,我需要隐藏最左侧,以便窗口现在是原来大小的一半,
并显示原始窗口的右半部分。

Tkinter 的所有调整大小功能都从窗口的左侧开始。 更改几何值只能显示左侧,而隐藏右侧; 我需要逆向。

有人知道怎么做吗?

(我不希望用户必须拖动窗口边框, 我需要按钮来自动化它)。


规格:

  • Python 2.7.1
  • Tkinter
  • Windows 7

【问题讨论】:

  • 是您不知道如何调整窗口大小的问题,还是您想隐藏窗口左侧的小部件(从而导致窗口缩小)的问题)?您需要隐藏整个小部件,还是只隐藏部分小部件?
  • 我想我在美学上打算隐藏一半小部件并缩小窗口,但我并不打算采用这种方法(因为我有很多小部件)。我真的只是希望有一种方便的方法来正确锚定调整大小,但看起来好像没有简单的解决方案(我觉得这很奇怪)。

标签: python resize tkinter tk


【解决方案1】:

您可以通过在正确的位置使用减号来使用右锚定几何规范:

123x467-78+9

但是,我不知道这是否适用于Windows(上面是一个X11技巧,我不知道它是否在平台兼容层实现);您可能只需要根据左侧的投影大小计算新位置并使用它。

【讨论】:

  • 可悲的是,看起来好像您只能使用减号作为窗口位置,而不是它的大小。 (尝试执行 root.geometry('-800x800') 会出现错误:'Bad Geometry Specifier'。)
  • @Anti:负宽度(或高度)没有意义,因为我不是一个练习纯数学家。
  • 我想到了类似的东西。那么我如何才能使用锚定来调整窗口大小呢? :(
  • 部分几何说明符 (WIDTHxHEIGHT) 有效,但我忘记了它们是否适用于右相对(或底部相对)定位,尤其是在非 X11 上。
【解决方案2】:

这是你想要的吗?

import Tkinter as Tk #tkinter

def toggle():
    if frame1.winfo_ismapped():
        frame1.grid_remove()
    else:
        frame1.grid()

root = Tk.Tk()
root.geometry('-450+250')
frame1 = Tk.Frame(root, width=200, height=100, bg='red')
frame1.grid(row=0, column=0)
frame2 = Tk.Frame(root, width=200, height=100, bg='blue')
frame2.grid(row=0, column=1)
Tk.Button(root, text='toggle', command=toggle).grid(row=1, column=1)

root.mainloop()

【讨论】:

  • 是的,我想会的!由于widget的格式会出现一些小问题,但我认为这是一个可行的解决方案。
【解决方案3】:

我的 IT 老师有一个建议:

添加一个看不见的滚动条,
调整根窗口大小后,
强制滚动条一直向右滚动。

(所以我想我必须创建一个画布,
将我所有的小部件打包到框架中,
将框架打包到画布上, 用滚动条配置画布?)

我不确定是否有设置滚动条当前位置的功能(因此是窗口的 xview),
但我想有。

尚未实现,但看起来很有希望。

感谢您的建议!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 2011-05-18
    • 1970-01-01
    • 2023-02-11
    • 2013-07-10
    相关资源
    最近更新 更多