我在这里有一个简单的例子:
from tkinter import *
root = Tk()
display = Label(root,text="Starting")
display.pack()
def change(): #Do on first press of button
global display
display.config(text="I just changed")
def change1(): #Do on second press of button
global display
display.config(text="I changed again")
def change2(): #Do on third press of button
global display
display.config(text="I changed once more")
button = Button(root,text="Press me",command=change)
button.pack()
它显然改变了标签'#34; Starting"到了#34;我刚改变了#34;在第一次按下按钮时,如何在连续按下同一个按钮时再执行其他两个功能(change1和change2)?
答案 0 :(得分:2)
您可以设置一个计数器来确定要将标签文本更改为什么,然后当计数器达到最大值时将其重置为处理进一步按下按钮。您实际上不需要global
来更改标签。
from tkinter import *
root = Tk()
display = Label(root,text="Starting")
display.pack()
def _change():
if button.counter == 0:
display.config(text="I just changed")
elif button.counter == 1:
display.config(text="I changed again")
else:
display.config(text="I changed once more")
if button.counter != 2:
button.counter += 1
else:
button.counter = 0
button = Button(root,text="Press me",command=_change)
button.counter = 0
button.pack()
root.mainloop()
答案 1 :(得分:-2)
要做到这一点,你必须定义一个变量来跟踪按下按钮的时间。 您还必须创建更新函数以增加变量并测试变量的状态。
例如:
from tkinter import *
root = Tk()
display = Label(root,text="Starting")
displayState = 1
display.pack()
def change():
global displayState, display
if displayState == 1:
display.config(text="I just changed")
elif displayState == 2:
display.config(text="I changed again")
elif displayState == 3:
display.config(text="I changed once more")
displayState += 1
button = Button(root,text="Press me",command=change)
button.pack()
root.mainloop()