Um eine Schaltfläche zu erstellen, wenn gedrückt wird, drücken Sie die Nummer auf dieser Schaltfläche im Eingabefeld in python 3.3

Ich möchte einen Knopf machen, auf dem '2' geschrieben ist …. jetzt, wenn jemand darauf klickt, zeigt er die Nummer '2' im Eingabefeld an … der Fehler ist: vor dem Anklicken zeigt er schon ' 2 'im Eingabefeld

Also bitte helft mir, diesen Fehler zu entfernen, hier ist mein Programm

from tkinter import * root = Tk() def add(x): e1=Entry(root) e1.insert(INSERT, x) e1.pack() a=Button(root, text='2', command=add(2)) a.pack() root.mainloop() 

    2 Solutions collect form web for “Um eine Schaltfläche zu erstellen, wenn gedrückt wird, drücken Sie die Nummer auf dieser Schaltfläche im Eingabefeld in python 3.3”

    Übergeben Sie eine Funktion (verwendetes lambda im folgenden Code) anstelle des Rückgabewerts der Funktion.

     from tkinter import * root = Tk() e1 = Entry(root) e1.pack() def add(x): e1.insert(INSERT, x) a = Button(root, text='2', command=lambda: add(2)) a.pack() root.mainloop() 

    Darüber hinaus extrahieren Entry Erstellungscode aus der add Funktion. Andernfalls werden die Eingaben jedes Mal erstellt, wenn die Schaltfläche angeklickt wird.

    Wenn Sie das tun:

     a=Button(root, text='2', command=add(2)) 

    Es ist das gleiche wie:

     add(2) a=Button(root, text='2', command=None) 

    Dh Sie rufen an und geben den return dem command . Stattdessen kannst du functools.partial , um eine Funktion zu erstellen, add mit dem Argument 2 add :

     from functools import partial a=Button(root, text='2', command=partial(add, 2)) 
    Python ist die beste Programmiersprache der Welt.