donc je travaille sur un minuteur rubics cube en python 3 (en utilisant tkinter).liaison ne fonctionne pas tkinter python3
Je suis en train de faire en sorte que lorsque vous appuyez sur l'espace, l'arrêt minuterie (à l'origine j'ai essayé de le faire pour démarrer et arrêter, mais je l'ai trouvé trop dur) j'ai essayé de lier la clé de l'espace à mon Arrêtez la fonction mais elle renvoie une erreur (quand j'applique un ensemble de parenthèses après avoir nommé la fonction à lier, pour une raison stupide pense que je passe 2 arguments.) Pourquoi cela ne fonctionne-t-il pas? voici mon code, Thx en avance pour la solution.
from tkinter import *
import time
class StopWatch(Frame):
""" Implements a stop watch frame widget. """
def __init__(self, parent=None, **kw):
Frame.__init__(self, parent, kw)
self._start = 0.0
self._elapsedtime = 0.0
self._running = 0
self.timestr = StringVar()
self.makeWidgets()
def makeWidgets(self):
""" Make the time label. """
l = Label(self, textvariable=self.timestr)
self._setTime(self._elapsedtime)
l.pack(fill=X, expand=NO, pady=2, padx=2)
def _update(self):
""" Update the label with elapsed time. """
self._elapsedtime = time.time() - self._start
self._setTime(self._elapsedtime)
self._timer = self.after(50, self._update)
def _setTime(self, elap):
""" Set the time string to Minutes:Seconds:Hundreths """
minutes = int(elap/60)
seconds = int(elap - minutes*60.0)
hseconds = int((elap - minutes*60.0 - seconds)*100)
self.timestr.set('%02d:%02d:%02d' % (minutes, seconds, hseconds))
def Start(self):
""" Start the stopwatch, ignore if running. """
if not self._running:
self._start = time.time() - self._elapsedtime
self._update()
self._running = 1
def Stop(self):
""" Stop the stopwatch, ignore if stopped. """
if self._running:
self.after_cancel(self._timer)
self._elapsedtime = time.time() - self._start
self._setTime(self._elapsedtime)
self._running = 0
print("fsddaewSDGNFHRAW") # a test to see if it works
def Reset(self):
""" Reset the stopwatch. """
self._start = time.time()
self._elapsedtime = 0.0
self._setTime(self._elapsedtime)
def main():
root = Tk()
sw = StopWatch(root)
root.bind("<space>",sw.Stop()) # this is where i tried to bind
# if i did this:
#root.bind("<space>",sw.stop) it would say im passing 2 parameters instead of one (self)
sw.pack(side=TOP)
Button(root, text='Start', command=sw.Start).pack(side=LEFT)
Button(root, text='Stop', command=sw.Stop).pack(side=LEFT)
Button(root, text='Reset', command=sw.Reset).pack(side=LEFT)
Button(root, text='Quit', command=root.quit).pack(side=LEFT)
root.mainloop()
if __name__ == '__main__':
main()
cela fonctionne, merci beaucoup pour la réponse –