如果mywidget条目发生更改,它应该运行函数atado_enter
。如果我在这个函数中输入了一些错误,它会给我error msg,但是如果我想做一些事情,它严格来说什么也不做。有人能解释一下有什么问题吗?你知道吗
#!usr/bin/python
#-*- coding: utf-8 -*-
import os
import time
import mysql.connector
import getpass
import smtplib
from email.mime.text import MIMEText
global atado_kartya_szam
global atvevo_kartya_szam
from PIL import Image, ImageTk
#from Tkinter import Tk, Text, TOP, BOTH, X, N, LEFT
from Tkinter import *
from Tkinter import Tk as tk
from ttk import Frame, Style, Entry, Label
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)
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()
首先。我想你们的进口产品有问题。你知道吗
更改此项:
对此:
看到已经有了一个使用
trace
的答案,而我的答案却没有,我决定添加一个有趣的替代方法,每200毫秒检查一次,看看这个值是否发生了变化。这个数字可以更改为任何ms。它可能不像trace那么简单,但确实有效。你知道吗我删除了跟踪并创建了一个函数/方法,该函数/方法将检查
mywidget
是否已更改,如果为true,则调用atado_entry
。你知道吗完整代码如下:
一旦
initUI
完成执行,myvar
就会收集垃圾,因为不再有对它的活动引用。垃圾回收的StringVar不会触发任何回调。你知道吗请尝试保留对该对象的一个较长的引用。最简单的方法是将其赋给
self
的属性:相关问题 更多 >
编程相关推荐