从右侧调整Tkinter窗口大小(python)

0 投票
3 回答
1242 浏览
提问于 2025-04-16 22:29

我不太确定怎么表达这个问题……

我有一个Tkinter窗口,我需要在按下一个按钮时隐藏这个窗口的一半。
不过,我需要隐藏的是窗口的左边,这样窗口就会变成原来的一半,
只显示原窗口的右半部分。

Tkinter的所有调整大小的功能都是从窗口的左边开始的。
更改窗口的大小只能显示左边的部分,而隐藏右边;
我需要的是相反的效果。

有没有人知道怎么做到这一点?

(我不想让用户去拖动窗口边框,我需要按钮来自动完成这个操作)。


规格:

  • Python 2.7.1
  • Tkinter
  • Windows 7

3 个回答

0

我的IT老师给了我一个建议:

在看不见的地方加一个滚动条,
然后在调整根窗口大小后,
强制滚动条滚动到最右边。

(所以我想我需要创建一个画布,
把所有的控件放到框架里,
再把框架放到画布上,
然后用滚动条来配置画布?)

我不太确定有没有函数可以设置滚动条的当前位置(也就是窗口的x视图),
但我想应该是有的。

还没开始实现这个,不过看起来很有希望。

谢谢你的建议!

2

你可以通过在合适的位置使用负号来实现右对齐的几何规格:

123x467-78+9

不过,我不确定这个方法在Windows上是否有效(上面提到的是X11的技巧,我不知道它是否在平台兼容层中实现了);你可能需要根据左侧的预期大小来计算新的位置,然后使用这个位置。

1

这段代码能达到你想要的效果吗?

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()

撰写回答