我在Tkinter中知道"<Configure>"
事件处理窗口中的大小更改。但是,我需要区分用户何时点击最大化按钮,恢复按钮以及用户何时调整窗口大小(而不是一次调整所有三个)。关于如何做到这一点的任何想法?有标准的方法吗?例如,当用户达到最大化时,我想执行我的代码以最大化。当用户点击恢复时,我想执行不同的代码来恢复。当用户拖动调整大小(或使用键盘快捷键执行此操作)时,我希望它完全执行不同的代码。
答案 0 :(得分:1)
我无法想到跟踪这些事件的内置方法,但您可以在根窗口上使用state()
方法来跟踪更改。您可以检查state()
的返回值,特别是normal
和zoomed
(仅限Windows和OSX),并根据这些值调用您自己的方法来处理调整大小类型。这是一个澄清的例子:
class App(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
# initialize the new_state
self.new_state = 'normal'
self.parent.bind('<Configure>', self._resize_handler)
def _resize_handler(self, event):
self.old_state = self.new_state # assign the old state value
self.new_state = self.parent.state() # get the new state value
if self.new_state == 'zoomed':
print('maximize event')
elif self.new_state == 'normal' and self.old_state == 'zoomed':
print('restore event')
else:
print('dragged resize event')
root = Tk()
App(root).pack()
root.mainloop()
如果你想区分拖动窗口和拖动调整大小,你必须添加一些额外的检查,可能会在<Configure>
之前和之后的大小中存储大小winfo_height()
和{ {1}},如果没有发生任何变化,您就知道窗口只是重新定位。
希望有所帮助。