La procédure est la suivante :
import tkinter as tk window = tk.Tk() window.title("我的程序") window.geometry('400x300') var = tk.StringVar() lable = tk.Label(window,textvariable = var,font = (('微软雅黑'),12)) lable.pack() on_hit = True def run(): global on_hit if on_hit == True: on_hit = False var.set('you hit me') else: on_hit = True var.set('') button = tk.Button(window,text = 'hit',font = (('微软雅黑'),12),command = run) button.pack() window.mainloop()
L'effet de ce programme est qu'il y a un bouton. Si vous appuyez dessus, vous me frappez apparaîtra. Appuyez à nouveau dessus et il disparaîtra ce cycle
Pourquoi le bouton est-il écrit comme bouton = tk.Button(window, text). = 'Générer des questions et des réponses',font = (('Microsoft Yahei'),12), command = run()), ajoutez des parenthèses lors de l'appel de la fonction, et appuyez à nouveau sur le bouton, il dira toujours que vous m'avez frappé, et le contenu de l'étiquette ci-dessus ne changera plus ?
Dans cette phrase, enregistrez simplement le bouton par la fonction d'exécutionelle-même et il sera automatiquement appelé après avoir cliqué sur le bouton (équivalent à exécuter après avoir cliqué sur).
L'interprète appellerarun()
Si changé enimmédiatement lorsqu'il verra cette phrase, puis enregistrera la valeur de retour
run()
de l'appelau bouton. Désormais, la valeur de retour est appelée après avoir cliqué sur le bouton (Aucune dans cet exemple).la commande peut être appelée de deux manières :
b = Button(... command = button)
b = Button(... command = lambda: button('hey'))
Si vous souhaitez utiliser () pour appeler, vous pouvez utiliser lambda pour écrire :
button = tk.Button(window, text = 'Générer des questions et des réponses', font = (('Microsoft Yahei'),12), command =lambda : exécuter())