Ho un programma master in python3 che chiamasottoprogrammi tramite moduli. Funziona bene, tranne per il fatto che i miei moduli non aggiornano i campi di inserimento quando le modifiche vengono apportate altrove all'interno del modulo.Il modulo mostra che i valori sono inseriti nella posizione corretta, ma la finestra non viene aggiornata. Ecco un esempio del programma principale: -
# 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
Ed ecco il modulo che viene chiamato (memorizzato come "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
Eventuali suggerimenti?
risposte:
0 per risposta № 1Tkinter non è progettato per funzionare in questo modo. Un programma completo dovrebbe sempre avere una sola istanza di Tk
in una volta. Dovresti creare istanze di Toplevel
nei tuoi sottoprogrammi.