使用if语句测试Tkinter Button对象

时间:2013-10-06 19:29:26

标签: python button python-3.x tkinter

我正在开发一个程序,需要一个带按钮的GUI来完成某些事情,就像对按钮有疑问时的情况一样,但我遇到了困难,因为虽然你可以用按钮激活功能,但你无法测试他们目前正在使用if语句。我知道如何使用检查按钮和单选按钮,但我还没有找到任何其他远程有用的东西。我需要能够知道他们被按下了多长时间,以及在他们被释放时按下他们被按下的东西。我需要一种方法来指定一个变量,当你仍然按住按钮时按下该变量,并且在任何其他时间使用普通按钮假,而不是每次按下时切换的按钮。

1 个答案:

答案 0 :(得分: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中对此进行了测试,然后将导入从Tkinter更改为tkinter。它可能在3.x中工作,但我没有用该版本进行测试。