Mam problem z uzyskaniem wartości z Entry na najwyższym poziomie. mój kod:

    Wprowadz=Toplevel()
    Wprowadz1=Entry(Wprowadz)
    Wprowadz1.grid(row=0, column=0)
    PrzyciskWprowadz=Button(Wprowadz, text="Wprowadź", width=30, height=2, command= lambda imie=Wprowadz1.get(), nazwisko="nazwisko", dimie=str("dimie"), klasa=str("klasa") : fun_sprowadzdosql(imie, nazwisko, dimie, klasa))
    PrzyciskWprowadz.grid(row=1, column=0)

Chcę uzyskać wartość Wprowadz1, aby przekazać ją do funkcji.

0
Pawel_R 17 grudzień 2019, 22:20

1 odpowiedź

Najlepsza odpowiedź

Musisz wywołać metodę .get() po kliknięciu przycisku. Wołasz to podczas definiowania przycisku.

Jeszcze jedna rada: nie używaj lambda, zwłaszcza jeśli nie zawiera więcej niż jednej funkcji. Chociaż lambda ma swoje zastosowania, kod używający lambda może być trudny do odczytania, trudny do napisania i trudny do debugowania w czymkolwiek z wyjątkiem najprostszych przypadków.

PrzyciskWprowadz=Button(
    Wprowadz, text="Wprowadź", width=30, height=2, command= callback
)

def callback():
    imie=Wprowadz1.get()
    fun_sprowadzdosql(imie, "nazwisko", "dimie", "klasa")

Jeśli wolisz używać lambda, zadziała:

PrzyciskWprowadz=Button(
    Wprowadz, text="Wprowadź", width=30, height=2,
    command= lambda wprowadz1=Wprowadz1: fun_sprowadzdosql(wprowadz1.get(), "nazwisko", "dimie", "klasa"))
0
Bryan Oakley 17 grudzień 2019, 22:36