/ / I campi di inserimento non vengono aggiornati utilizzando i moduli definiti dall'utente - python, tkinter

I campi di inserimento non vengono aggiornati utilizzando i moduli definiti dall'utente - python, tkinter

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 № 1

Tkinter 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.