2

当我尝试检测使用 tkinter 调整窗口大小时,它大部分时间都有效。但是,有一个例外;也就是说,当第一次垂直调整它的大小并使窗口变大时,什么都没有拾取。当窗口出现时,我看到了初始大小,但如果我尝试立即使窗口垂直变大,之后就什么也看不到了。但是,如果我在以另一种方式调整大小(即缩小或水平调整大小)之后尝试使其垂直“更高”,那么它可以正常工作。

这是我正在使用的代码的要点:

from Tkinter import *
main = Tk()
def resize(event):
    print("The new dimensions are:",event.width,"x",event.height)
    window.focus_set()
canvas = Canvas(main, width=850, height=400)
window = Frame(main, width=800, height=10)
window.focus_set()
canvas.bind("<Configure>", resize)
canvas.pack()
canvas.update()
window.pack()
main.mainloop()

难道我做错了什么?如果重要的话,我在 64 位 Ubuntu 12.10 上使用 Python 2.7.3

编辑:当窗口大小高于 时,似乎尺寸不正确(水平放大)或根本不显示(垂直放大)852x402。这是我的窗口管理器(即 Unity)的问题吗?

4

2 回答 2

2

这是因为画布没有被调整大小。您正在画布上设置绑定,但尚未将画布配置为与包含窗口一起增长和缩小。

尝试将画布和框架小部件的背景设置为与众不同的东西,您就会明白我的意思。

要解决此问题,请尝试在打包小部件时设置expandfill属性。

于 2013-02-25T22:00:51.017 回答
2

改变canvas = Canvas(main, width=850, height=400)canvas = Canvas(main, width=850, height=400, bg="red")看看会发生什么。

由于画布位于根窗口内,因此当您使窗口垂直变大时,您不会更改画布大小或位置。它保持 400 的最大高度,并且不调用处理程序。但是,在水平放大的情况下,它的位置正好在中间,因为调用了pack(): 这就是它移动的原因,并且调用了绑定函数。

当您在水平和垂直方向上缩小窗口时的其余结果与预期的一样。

于 2013-02-25T22:00:59.690 回答