Forum
>>
Programmazione Python
>>
GUI
>>
TKinter passaggio variabili da Classe a codice
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da Pietro Bruno Lancerotto |
2024-01-24 19:50:49 - TKinter passaggio variabili da Classe a codice
|
Ciao a Tutti
Sono ai primi approcci con Python Non sono digiuno del tutto, nel mio lavoro ho programmato PLC HMI CN Migliaia di righe di linguaggio strutturato L'applicazione che sto tentando di sviluppare parte ovviamente da una interfaccia. Girovagando sul WEB ho trovato PAGE. Un bellissimo strumento che mi ha riportato alle IDE per sviluppare le HMI delle macchine su cui ho lavorato. Fatta l'interfaccia necessita tirar fuori le variabili .. e qui mi sono arenato Ho dei RadioButton che valgono 1 2 3 ed il valore è su "RadioValue" PAGE genera un file con l'interfaccia vera e propria ed un file support Di seguito uno stralcio del codice dell'interfaccia =========== class PAGINA: def __init__(self, top=None): top.geometry("940x950+308+104") top.minsize(940, 950) top.maxsize(1924, 1061) top.resizable(1, 1) top.title("XXXXX") top.configure(background="#d9d9d9") top.configure(highlightbackground="#d9d9d9") top.configure(highlightcolor="black") self.top = top # VARIABILI DA UTILIZZARE self.TestoDaInviare = tk.StringVar() self.PostName = tk.StringVar() self.TestoRicevuto = tk.StringVar() self.RadioValue = tk.IntVar() ################################## self.RadiobuttonNP = tk.Radiobutton(self.top) self.RadiobuttonNP.place(relx=0.394, rely=0.926, relheight=0.032, relwidth=0.117) #------------ omissis self.RadiobuttonNP.configure(text='''NON Partiti''') self.RadiobuttonNP.configure(value='1') self.RadiobuttonNP.configure(variable=self.RadioValue) self.RadiobuttonRIT = tk.Radiobutton(self.top) self.RadiobuttonRIT.place(relx=0.532, rely=0.926, relheight=0.032, relwidth=0.117) #----------- omissis self.RadiobuttonRIT.configure(text='''RITIRATI''') self.RadiobuttonRIT.configure(value='2') self.RadiobuttonRIT.configure(variable=self.RadioValue) self.RadiobuttonMESS = tk.Radiobutton(self.top) self.RadiobuttonMESS.place(relx=0.67, rely=0.926, relheight=0.032, relwidth=0.13 #------------- omissis self.RadiobuttonMESS.configure(text='''MESSAGGIO''') self.RadiobuttonMESS.configure(value='3') self.RadiobuttonMESS.configure(variable=self.RadioValue) # # omissis # def start_up(): pkt_gui_rcs_support.main() if __name__ == '__main__': pkt_gui_rcs_support.main() =================================== Di seguito il sorgente del vero e proprio programma ============================== import sys import tkinter as tk import tkinter.ttk as ttk from tkinter.constants import * import pkt_gui_rcs _debug = True # False to eliminate debug printing from callback functions. def main(*args): '''Main entry point for the application.''' global root root = tk.Tk() root.protocol( 'WM_DELETE_WINDOW' , root.destroy) # Creates a toplevel widget. global _top1, _w1 _top1 = root _w1 = pkt_gui_rcs.PAGINA(_top1) root.mainloop() def Messaggio(*args): StampaRadioValue() if _debug: print('pkt_gui_rcs_support.Messaggio') for arg in args: print (' another arg:', arg) sys.stdout.flush() def NonPartiti(*args): StampaRadioValue() if _debug: print('pkt_gui_rcs_support.NonPartiti') for arg in args: print (' another arg:', arg) sys.stdout.flush() def Ritirati(*args): StampaRadioValue() if _debug: print('pkt_gui_rcs_support.Ritirati') for arg in args: print (' another arg:', arg) sys.stdout.flush() def StampaRadioValue(): print('RadioValue = ', ????? RadioValue ??? ) # Qui non riesco a visualizzare la variabile RadioValue def sendbeacon(*args): if _debug: print('pkt_gui_rcs_support.sendbeacon') for arg in args: print (' another arg:', arg) sys.stdout.flush() def sendtext(*args): if _debug: print('pkt_gui_rcs_support.sendtext') for arg in args: print (' another arg:', arg) sys.stdout.flush() if __name__ == '__main__': pkt_gui_rcs.start_up() =============================== Modificando la riga in def StampaRadioValue(): print('RadioValue = ', _w1.RadioValue) restituisce RadioValue = PY VAR3 Una volta che riesco a portar lì quella variabile poi per assonanza tiro fuori anche il resto Ringrazio quanti potranno darmi l'imbeccata giusta --- Ultima modifica di Pietro Bruno Lancerotto in data 2024-01-24 20:20:44 --- --
Bruno L. |
|
Scritto da nuzzopippo |
2024-01-24 23:27:46 - Re: TKinter passaggio variabili da Classe a codice
|
Ciao @Lancerotto
A quanto vedo, Ti stai avventurando su di una strada piena di spine, i GUI-Editor (tipo PAGE) sono un ottimo modo per NON imparare a gestire le le cose ed ad incasinare il codice correndo dietro ai loro artefatti. Personalmente non li uso più da quando abbandonai il VisualBasic alla fine degli anni '90 e già in java preferivo crearmi le finestre da codice, ho visto la Tua finestra, se vuoi Ti faccio un esempio su come crearla direttamente da codice, è un discorso inizialmente frustrante ma molto più efficace se acquisito. Venendo al Tuo problema: modifica in questo modo la funzione "StampaRadioValue()": def StampaRadioValue(): # Qui non riesco a visualizzare la variabile RadioValue print(f'RadioValue = {_w1.RadioValue.get()}')Vedrai che il valore corrispondente al radiobutton selezionato verrà stampato, fai sapere. La difficoltà che Tu trovi mi fa supporre che non hai ancora studiato le classi in python, è così? Se si temo Ti si presenteranno altri problemi, la OOP è un paradigma quasi obbligato con i framework grafici, forse una occhiata alla sezione del tutorial di python relativa alle classi potrebbe essere propedeutica ed utile. Fatti non foste a viver come bruti... |
|
Scritto da Pietro Bruno Lancerotto |
2024-01-25 08:16:20 - Re: TKinter passaggio variabili da Classe a codice
|
E supponi bene
Vengo da un mondo un po' diverso per cui capire certe logiche mi è un po' ostico Mi sono dotato di alcuni volumi ... leggo leggo ma trovo difficoltà Forse è proprio perchè si è abituati ragionare in un modo e ci vuole tempo a immedesimarsi Ho cercato aiuto da un amico (espertissimo di DB Java e compagnia bella) ma la risposta è stata: Python ?? 0 totale Vorra dire che mi impegnerò a studiare Certo che ho preso un libro edito (tradotto) da Amazon così zeppo di errori talmente evidenti che li vedo io che sono un lattante; contestato ... mi hanno restituito il costo e mi hanno detto di tenermelo Approposito ... funziona. Non avevo dubbi Comunque il get lo ho capito e potevo pensarci; non ho capito la f iniziale Ma dammi il tempo Grazie infinite --
Bruno L. |
|
Scritto da nuzzopippo |
2024-01-25 09:38:24 - Re: TKinter passaggio variabili da Classe a codice
|
Il capitolo 9 del tutorial potrebbe aiutarti (l'intero tutorial di più) sulla OOP, a suo tempo ho trovato molto istruttivo il libro del De Sio "Object Oriented && Java 5", tratta java ma i concetti base ci sono tutti, il lo comprai cartaceo ma attualmente l'autore ha reso disponibile il pdf per il download, lo trovi in fondo a questa pagina, impegnativo ma una occhiata la darei.
Riguardo alla "f" indica che è una stringa formattata, una comodità per facilitare l'output, man mano che procederai nella consultazione della documentazione python troverai una enormità di piccoli strumenti utili Ciao Fatti non foste a viver come bruti... |
|
Scritto da Spammer Spammer |
2024-11-15 04:07:12 - Re: TKinter passaggio variabili da Classe a codice
|
Pagina: 1
Esegui il login per scrivere una risposta.