Основываясь на ответе из более раннего стекового потока, я пытался связать запись (через entry.get) с переменной. Первоначально это работало, поскольку я действительно могу изменить значение, как указано в вызове печати в методе get_value. Однако в конце переменная не была изменена, как показано нажатием кнопки проверки. Надеюсь, кто-нибудь покажет, что я делаю не так.
import tkinter as tk
class Window():
def __init__(self):
tk.Label(master, text ='Fox number').grid(row=0,column=0)
tk.Label(master, text ='Hare number').grid(row=1,column=0)
self.fox_entry=tk.Entry(master,width=5, validate="key")
self.fox_entry['validatecommand'] =\
self.fox_entry.register(self.is_okay),'%P'
self.hare_entry=tk.Entry(master, width=5, validate="key")
self.hare_entry['validatecommand'] =\
self.hare_entry.register(self.is_okay),'%P'
self.fox_entry.grid(row=0, column=1)
self.hare_entry.grid(row=1, column=1)
def is_okay(self, P):
try:
if P == '' or int(P) >= 0:
return True
except:
return False
class Ecosystem():
def __init__(self):
self.foxnumber = 100
self.harenumber = 10
self.inputvalue = None
def animal_entries(self):
def input_user(entry):
def get_value(event):
self.inputvalue = entry.get()
print(self.inputvalue)
return self.inputvalue
entry.bind('<Return>', get_value)
return self.inputvalue
my_win.fox_entry.insert(0,self.foxnumber)
my_win.hare_entry.insert(0,self.harenumber)
self.inputvalue = self.foxnumber
self.foxnumber = input_user(my_win.fox_entry)
self.inputvalue = self.harenumber
self.harenumber = input_user(my_win.hare_entry)
def write(self):
print('hares: ', self.harenumber, 'foxes: ',self.foxnumber)
master = tk.Tk()
my_win = Window()
my_ecosystem = Ecosystem()
my_ecosystem.animal_entries()
tk.Button(master, text = 'check',command=my_ecosystem.write).grid(row=2, column=0)
master.mainloop()