Python Tkinter numpad按钮和多个输入
基本上,我正在尝试这样做,当您更改Python Tkinter numpad按钮和多个输入,python,tkinter,Python,Tkinter,基本上,我正在尝试这样做,当您更改输入输入字段时,按钮会将其标签附加到正确的输入 我正在使用active\u entry来定位刚才关注的输入。由于某些原因,事件绑定没有正确地将其更改为新的输入字段 从默认的条目更改后的实际结果然后按按钮\u 1:类型错误:getattr():属性名称必须是字符串 from tkinter import * class App(Tk): def __init__(self): Tk.__init__(self) self.
输入
输入字段时,按钮会将其标签附加到正确的输入
我正在使用active\u entry
来定位刚才关注的输入。由于某些原因,事件绑定没有正确地将其更改为新的输入字段
从默认的条目更改后的实际结果
然后按按钮\u 1
:类型错误:getattr():属性名称必须是字符串
from tkinter import *
class App(Tk):
def __init__(self):
Tk.__init__(self)
self.set_active_entry('entry_1_var') # set initial active entry
self.entry_1_var = StringVar()
self.entry_2_var = StringVar()
self.entry_1 = Entry(self, width=10, font='Helvetica 32', textvariable=self.entry_1_var)
self.entry_2 = Entry(self, width=10, font='Helvetica 32', textvariable=self.entry_2_var)
self.create_widgets()
self.entry_binding()
def set_active_entry(self, name):
self._active_entry = name
print(self._active_entry)
@property
def active_entry(self):
return getattr(self, self._active_entry)
@active_entry.setter
def active_entry(self, value):
setattr(self, self._active_entry, value)
def create_widgets(self):
self.entry_1.pack()
self.entry_2.pack()
label = '1'
button_1 = Button(self, text=label, width=10, height=5, command=lambda x=label: self.num_pad(x))
button_1.pack()
def entry_binding(self):
self.entry_1.bind('<FocusIn>', lambda x='entry_1_var': self.set_active_entry(x))
self.entry_2.bind('<FocusIn>', lambda x='entry_2_var': self.set_active_entry(x))
def num_pad(self, label):
current_text = self.active_entry.get()
self.active_entry.set(current_text+label)
app = App()
app.mainloop()
从tkinter导入*
类应用程序(Tk):
定义初始化(自):
Tk.\uuuuuu初始(自我)
self.set_active_entry('entry_1_var')#set initial active entry
self.entry_1_var=StringVar()
self.entry_2_var=StringVar()
self.entry\u 1=entry(self,width=10,font='Helvetica 32',textvariable=self.entry\u 1\u var)
self.entry_2=entry(self,width=10,font='Helvetica 32',textvariable=self.entry_2_var)
self.create_widgets()
self.entry_binding()
def set_active_条目(自身,名称):
self.\u active\u entry=名称
打印(自激活输入)
@财产
def active_入口(自身):
返回getattr(self,self.\u active\u条目)
@主动输入设置器
def active_条目(自身,值):
setattr(自我、自我、活动项、值)
def创建_小部件(自):
self.entry_1.pack()
自助入口_2.pack()
标签='1'
button_1=按钮(self,text=label,width=10,height=5,command=lambda x=label:self.num_pad(x))
按钮_1.pack()
def条目_绑定(自):
self.entry\u 1.bind(“”,lambda x='entry\u 1\u var':self.set\u active\u entry(x))
self.entry\u 2.bind(“”,lambda x='entry\u 2\u var':self.set\u active\u entry(x))
def num_焊盘(自身,标签):
当前\u text=self.active\u entry.get()
self.active\u entry.set(当前\u文本+标签)
app=app()
app.mainloop()
问题出在这些行中
self.entry_1.bind('<FocusIn>', lambda x='entry_1_var': self.set_active_entry(x))
self.entry_2.bind('<FocusIn>', lambda x='entry_2_var': self.set_active_entry(x))
或
self.entry\u 1.bind(“”,lambda e:self.set\u active\u entry('entry\u 1\u var'))
self.entry_2.bind(“”,lambda e:self.set_active_entry('entry_2_var'))
self.entry_1.bind('<FocusIn>', lambda e, x='entry_1_var': self.set_active_entry(x))
self.entry_2.bind('<FocusIn>', lambda e, x='entry_2_var': self.set_active_entry(x))
self.entry_1.bind('<FocusIn>', lambda e: self.set_active_entry('entry_1_var'))
self.entry_2.bind('<FocusIn>', lambda e: self.set_active_entry('entry_2_var'))