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'))