繁体   English   中英

输入字段未使用用户定义的模块进行更新

[英]The Entry fields are not being updated using user-defined modules

我在python3中有一个主程序,该主程序通过模块调用子程序。 效果很好,除了在模块中其他位置进行更改时,我的模块不会更新Entry字段。 模块显示值已放置在正确的位置,但窗口未更新。 这是主程序的示例:

# test - master

from tkinter import *

root=Tk()
root.title("Test for the update problem")

import changeEntryfield

changeEntryfield.fun() # call to function inside module

root.mainloop()

# end of master program

这就是被调用的模块(存储为“ changeEntryfield.py”):

def fun():

    import tkinter 


    win=tkinter.Tk() # start a window

    g3=tkinter.StringVar()

    g3.set("text")

    a="something"

    field=tkinter.Entry(win,width=10,textvariable=g3)
    field.grid(column=1,row=0,sticky='W',padx=5,pady=5)

    grpslab3=tkinter.Label(win,text="The Field is: ")
    grpslab3.grid(column=0,row=0,sticky='W',padx=5,pady=5)

    # now do changes to field value

    g3.set(a)
    print ("1. In Entry, field = ",field['textvariable'])

    field['textvariable']=g3.get()
    print ("2. In Entry, field = ",field['textvariable'])

    field.config(textvariable=g3.get())
    print ("3. In Entry, field = ",field['textvariable'])

    field['textvariable']=a
    print ("4. In Entry, field = ",field['textvariable'])

    win.mainloop()

# end of module

有什么建议么?

Tkinter并非以这种方式工作。 一个完整的程序一次只能有一个Tk实例。 您应该在子程序中创建Toplevel实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM