-1

我正在开发一个需要带有按钮的 GUI 来执行某些操作的程序,这通常是在对按钮有疑问时出现的情况,但我遇到了困难,因为虽然您可以使用按钮激活功能,但您无法测试它们当前是否被 if 语句按下。我知道如何使用复选按钮和单选按钮,但我还没有发现任何其他远程有用的东西。我需要能够知道它们被按下了多长时间,并在它们被按下时做一些事情,当它们被释放时停止。我需要一种分配变量的方法,当您仍然按住按钮单击时该变量为真,其他任何时候为假,使用普通按钮,而不是每次按下时都会切换的变量。

4

1 回答 1

1

我不清楚你遇到了什么问题,所以我冒昧地编写了一个小 GUI,可以计算按下按钮的时间。

import tkinter as tk
import time

class ButtonTimer:
    def __init__(self, root):
        self.master = root
        self.button = tk.Button(self.master, text="press me")  # Notice I haven't assigned the button a command - we're going to bind mouse events instead of using the built in command callback.
        self.button.bind('<ButtonPress>', self.press)       # call 'press' method when the button is pressed
        self.button.bind('<ButtonRelease>', self.release)   # call 'release' method when the button is released
        self.label = tk.Label(self.master)
        self.startTime = time.time()
        self.endTime = self.startTime

        self.button.grid(row=1, column=1)
        self.label.grid(row=2, column=1)

    def press(self, *args):
        self.startTime = time.time()

    def release(self, *args):
        self.endTime = time.time()
        self.label.config(text="Time pressed: "+str(round(self.endTime - self.startTime, 2))+" seconds")

root = tk.Tk()
b = ButtonTimer(root)
root.mainloop()

注意:我在 python 2.7 中对此进行了测试,然后将导入从 更改Tkintertkinter. 它可能会在 3.x 中工作,但我还没有用那个版本测试它。

于 2013-10-06T19:59:50.677 回答