按住按钮时更改tkinter旋转框的增量

时间:2019-07-26 16:42:16

标签: tkinter timing touchscreen

顾名思义,我需要在一段时间后更改旋转框的增量。我需要使用旋转框滚动浏览整个32位整数(它必须在触摸屏上运行。任何其他选项也将不胜感激)。但是,用户在滚动浏览时必须保持一定的准确性,但是直到时间结束才能从整数的一端移到另一端时,还不应该使用它们。如何使按钮保持x倍的时间后,旋转框的增量发生变化?

谢谢!

1 个答案:

答案 0 :(得分:0)

SpinboxrepeatdelayrepeatInterval作为参数。如果将它们与计时机制结合使用,则可以实现“快速滚动”效果,如下所示:

import tkinter as tk

class GUI(tk.Tk):
    def __init__(self):
        super().__init__()
        self.s = tk.Spinbox(self)
        self.interval = 0
        self.s["values"] = [i for i in range(32000)]
        self.s.pack()
        self.s.bind('<ButtonPress-1>', self.on_press)
        self.s.bind('<ButtonRelease-1>', self.on_release)

    def on_press(self,event=None):
        self.interval +=1
        if self.interval <=3: #increases speed if button has been hold for 3 seconds
            self.after(1000,self.on_press)
        else:
            self.s.config(repeatdelay=1, repeatinterval=1)

    def on_release(self,event=None):
        self.interval = 0
        self.s.config(repeatdelay=100, repeatinterval=100)

root = GUI()
root.mainloop()