请原谅标题,因为用这么少的字符来解释这个标题并不容易。
这当然是Python,使用tkinter和Entry小部件。
所以我只有一个条目,而且我还有一个课程。这是一个非常简单的类,看起来像这样:
class Class1():
def __init__(self):
self.strVar = tk.StringVar()
实际上,创建该类只是为了尝试复制此特定问题。
然后,我们需要该类的两个实例以及一个“选定的”实例。也就是说,指向我们想要的两个实例中任何一个的指针。
c1 = Class1()
c1.strVar.set('First')
c2 = Class1()
c2.strVar.set('Second')
selectedClass = c1
接下来,我们需要将Entry小部件的textVariable设置为'selectedClass'的strVar:
entry1 = tk.Entry(frame1, textvariable=selectedClass.strVar)
如果不清楚,我的目的是现在可以交换selectedClass;而是将其指向另一个实例(如c2),然后更改条目的文本。这不是正在发生的事情。
但是值正在变化。我有一个链接到此命令的按钮:
def ChangeSelected():
global selectedClass
print(f'Before: {selectedClass.strVar.get()}')
selectedClass = c2
print(f'After: {selectedClass.strVar.get()}')
selectedClass肯定在变化,因为这两个打印语句表明我们第一个得到“ First”,第二个得到“ Second”。但是,“输入”文本仍显示“第一”。它尚未更新。
所以我也希望条目也要更新。在我的C#WPF日子里,您可以……情况看起来似乎有些不同,但是您可以调用“ RaisePropertyChanged”,它将更新变量的观察者(如文本框等)。
答案 0 :(得分:1)
您需要手动更改条目小部件的textvariable
属性:
entry1.configure(textvariable=c2.strVar)