gpt4 book ai didi

events - 在 tkinter 中连续调用 事件

转载 作者:行者123 更新时间:2023-12-03 23:31:06 25 4
gpt4 key购买 nike

我正在尝试编写一个函数来动态调整 tkinter 窗口中显示的图像的大小。
因此我将此函数绑定(bind)到 Configure事件:connroot.bind( "<Configure>", connresiz) 我的问题是:

  • 那个connresiz()函数在程序启动时被调用 3 次(为什么是 3 次?),并且
  • 更麻烦的是,在我拖动鼠标时,动态调整窗口大小会不断调用该函数!如何避免这种情况?

  • 我想过检查同时存在 <Configure><ButtonRelease-1>事件,但我不知道如何编码。

    最佳答案

    1) 我们不知道,因为我们看不到您的代码...

    2) 简短的回答是:你不能,因为这正是 <Configure>事件有!长答案,你可以,有一点技巧/黑客。由于任何时候窗口发生变化,它都会调用所有绑定(bind)的函数到<Configure>。 ,并且在释放鼠标按钮的任何时候都会发生同样的情况(在最后一次 <Configure> 调用之后),我们可以创建一个标志/开关,它会告诉我们,如果窗口已“配置”,那么我们可以随时检查该开关鼠标按钮被释放,并在我们运行一些操作后将其切换回默认值。

    因此,如果您只想调整图像大小,当释放鼠标并更改窗口时,这就是您需要的代码:

    from tkinter import *

    class Run:
    def __init__(self):
    self.root = Tk()
    self.clicked = False
    self.root.bind('<ButtonRelease-1>', self.image_resize)
    self.root.bind('<Configure>', lambda e: self.click(True))
    def image_resize(self, event):
    if self.clicked:
    print("I'm printed after <Configure>.") # the action goes here!
    self.click(False)
    def click(self, value):
    self.clicked = value

    app = Run()
    app.root.mainloop()

    关于events - 在 tkinter 中连续调用 <Configure> 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17747904/

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