bind
правильно работает в вашем коде. Проблема в том, что bind
не может получить значение, которое вы используете с return
- оно не может присвоить его какой-либо переменной, и вы должны использовать это значение непосредственно в searchChamber
или присвоить какой-либо переменной, чтобы использовать ее позже.
Другая проблема: когда вы закрываете окно, tkinter
уничтожает все виджеты, и вам нужно сохранить значение от Entry
в некоторой переменной
def searchChamber(self):
self.result = self.ent_InventoryNumber.get()
и позже получить эту переменную
test(GUI.result)
В этом примере я использую print()
, чтобы увидеть, выполняет ли bind
функцию после каждого нажатия клавиши. Я также использую переменную класса self.result
, чтобы сохранить значение и использовать его после закрытия окна.
GUI .py
import tkinter as tk
class GUI:
def __init__(self, master):
self.result = '' # default value as start
self.ent_InventoryNumber = tk.Entry(master)
self.ent_InventoryNumber.insert('end', "Wprowadź TUTAJ numer inwentarzowy")
self.ent_InventoryNumber.grid(row=2, column=0)
self.ent_InventoryNumber.bind("<KeyRelease>", self.searchChamber)
def searchChamber(self, event=None):
self.result = self.ent_InventoryNumber.get()
print('[DEBUG] searchChamber:', self.result)
main.py
import tkinter as tk
from GUI import GUI
window = tk.Tk()
myGUI = GUI(window)
window.mainloop()
print('result:', myGUI.result)