Skip to main content
 首页 » 编程设计

python之执行按钮方法

2025年05月04日60JustinYoung

我正在尝试在按下按钮时执行 Tkinter ttk 按钮方法,这意味着我希望该方法在按下按钮时继续执行并在我释放按钮时停止,但我不能'不太明白。这是代码。

from tkinter import * 
from tkinter import ttk 
 
class stuff (object): 
 
    def __init__(self, master): 
 
        master.title("Grid Master") 
        master.frame_1 = ttk.Frame(master) 
        master.frame_1.pack() 
        master.configure(background = "#FFFFFF") 
 
        self.button = ttk.Button(master, text = 'Press', command = self.callback) 
        self.button.pack() 
 
    def callback(self): 
        print ("Hello world") 
 
 
def main(): 
    root = Tk() 
    loop = stuff(root) 
    root.mainloop() 
 
if __name__ == '__main__': 
    main() 

您可以在代码中看到该方法仅打印 "Hello world" 并且我希望此函数执行并继续打印 Hello world 直到我释放按钮。

请您参考如下方法:

您可以使用 root.after() 重复安排作业来执行所需的任务。请注意,我已将按钮事件更改为在按下按钮时激活,并在释放按钮时终止“之后”作业。

try: 
    from tkinter import * 
    from tkinter import ttk 
except ImportError: 
    # Python 2, probably 
    from Tkinter import * 
    import ttk 
 
class stuff (object): 
    def __init__(self, master): 
        self._master = master 
        master.title("Grid Master") 
        master.frame_1 = ttk.Frame(master) 
        master.frame_1.pack() 
        master.configure(background = "#FFFFFF") 
 
        self.button = ttk.Button(master, text = 'Press') 
        self.button.bind("<Button-1>", self.button_pressed) 
        self.button.bind("<ButtonRelease-1>", self.button_released) 
        self.button.pack() 
 
        self.hello_world_frequency = 1    # milliseconds  
 
    def hello_world(self): 
        print ("Hello world") 
        self._job = self._master.after(self.hello_world_frequency, self.hello_world) 
 
    def button_pressed(self, event): 
        print ("Button down") 
        self.hello_world() 
 
    def button_released(self, event): 
        print ("Button released") 
        self._master.after_cancel(self._job) 
 
 
def main(): 
    root = Tk() 
    loop = stuff(root) 
    root.mainloop() 
 
if __name__ == '__main__': 
    main()