<p>首先。我想你们的进口产品有问题。你知道吗</p>
<p>更改此项:</p>
<pre><code>from Tkinter import *
from Tkinter import Tk as tk
from ttk import Frame, Style, Entry, Label
</code></pre>
<p>对此:</p>
<pre><code>from Tkinter import *
</code></pre>
<p>看到已经有了一个使用<code>trace</code>的答案,而我的答案却没有,我决定添加一个有趣的替代方法,每200毫秒检查一次,看看这个值是否发生了变化。这个数字可以更改为任何ms。它可能不像trace那么简单,但确实有效。你知道吗</p>
<p>我删除了跟踪并创建了一个函数/方法,该函数/方法将检查<code>mywidget</code>是否已更改,如果为true,则调用<code>atado_entry</code>。你知道吗</p>
<pre><code>last_mywidget = [""]
def CheckMywidget():
if last_mywidget != [mywidget.get()]:
atado_enter(mywidget.get())
last_mywidget[0] = mywidget.get()
print(last_mywidget)
mywidget.after(200, CheckMywidget)
else:
mywidget.after(200, CheckMywidget)
CheckMywidget()
</code></pre>
<p>完整代码如下:</p>
<pre><code>class Example(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.initUI()
def initUI(self):
def atado_enter(*args):
print("vmi")
self.parent.title("Pozi")
self.pack(fill = BOTH, expand=True)
frame1 = Frame(self)
frame1.pack(fill=X)
lbl1 = Label(frame1, text = "ĂtadĂł kártyája", width = 15)
lbl1.pack(side = LEFT, padx=5, expand=True)
myvar = StringVar()
myvar.set('')
mywidget = Entry(frame1,textvariable=myvar,width=10)
mywidget.pack()
#myvar.trace("w", atado_enter)
self.myvar = myvar
last_mywidget = [""]
def CheckMywidget():
if last_mywidget != [mywidget.get()]:
atado_enter(mywidget.get())
last_mywidget[0] = mywidget.get()
mywidget.after(200, CheckMywidget)
else:
mywidget.after(200, CheckMywidget)
CheckMywidget()
def main():
root = Tk()
root.geometry("550x450+300+300") # width x heigth + x + y (on screen)
app = Example(root)
root.mainloop()
if __name__ == '__main__':
main()
</code></pre>