gpt4 book ai didi

python - Tkinter 最大化/恢复/调整差异化大小

转载 作者:行者123 更新时间:2023-12-01 05:10:49 25 4
gpt4 key购买 nike

我在 Tkinter 中知道 "<Configure>"事件处理窗口中的大小更改。但是,我需要区分用户何时点击最大化按钮、恢复按钮以及用户何时调整窗口大小(而不是同时调整所有三个按钮)。关于如何做到这一点有什么想法吗?有标准的方法吗?例如,当用户点击最大化时,我想执行我的代码以最大化。当用户点击恢复时,我想执行不同的代码来恢复。当用户拖动以调整大小(或使用键盘快捷键来执行此操作)时,我希望它完全执行不同的代码。

最佳答案

我想不出跟踪这些事件的内置方法,但您可以使用 state() 根窗口上的方法来跟踪更改。可以查看state()的返回值,具体来说normalzoomed (看起来仅限于 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()winfo_width() ,如果没有发生任何变化,您就知道窗口只是重新定位了。

希望有帮助。

关于python - Tkinter 最大化/恢复/调整差异化大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24270149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com