当我尝试检测窗口是否使用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)的问题吗?
答案 0 :(得分:2)
这是因为画布不正在调整大小。您正在画布上设置绑定,但尚未将画布配置为随包含窗口一起增大和缩小。
尝试将画布和框架小部件的背景设置为独特的,你会看到我的意思。
要解决此问题,请尝试在打包小部件时设置expand
和fill
属性。