[Python] problema su TKinter

Riccardo mancuso mancuso.riccardo63 a gmail.com
Mar 18 Ago 2015 20:08:20 CEST


Salve a tutti,
ho un quesito per l'utilizzo delle librerie grafiche Tkinter.
Sto provando ad utilizzare Page (Gui Rad basato su Tcl) ed ho notato che
creata la maschera grafica, vengono generati due file:
1. descrive la maschera grafica (scritto in codice python)
2. l'altra di supporto per i comandi (scritto in codice python)

Proprio su quella di supporto sui comandi non riesco a capire come accedere
ai valori inseriti.
Ad esempio, ho creato una GUI per fare la somma tra due numeri, il cui
codice è qui riportato ("calcola_somma.py"):

#! /usr/bin/env python
#
# GUI module generated by PAGE version 4.5
# In conjunction with Tcl version 8.6
#    Aug 18, 2015 06:40:34 PM
import sys

try:
    from Tkinter import *
except ImportError:
    from tkinter import *

try:
    import ttk
    py3 = 0
except ImportError:
    import tkinter.ttk as ttk
    py3 = 1

import calcola_somma_support

def vp_start_gui():
    '''Starting point when module is the main routine.'''
    global val, w, root
    root = Tk()
    root.title('Calcola_la_somma')
    geom = "436x450+465+113"
    root.geometry(geom)
    w = Calcola_la_somma(root)
    calcola_somma_support.init(root, w)
    root.mainloop()

w = None
def create_Calcola_la_somma(root, param=None):
    '''Starting point when module is imported by another program.'''
    global w, w_win, rt
    rt = root
    w = Toplevel (root)
    w.title('Calcola_la_somma')
    geom = "436x450+465+113"
    w.geometry(geom)
    w_win = Calcola_la_somma (w)
    calcola_Q_support.init(w, w_win, param)
    return w_win

def destroy_Calcola_la_somma():
    global w
    w.destroy()
    w = None


class Calcola_la_somma:
    def __init__(self, master=None):
        _bgcolor = '#d9d9d9'  # X11 color: 'gray85'
        _fgcolor = '#000000'  # X11 color: 'black'
        _compcolor = '#d9d9d9' # X11 color: 'gray85'
        _ana1color = '#d9d9d9' # X11 color: 'gray85'
        _ana2color = '#d9d9d9' # X11 color: 'gray85'
        master.configure(highlightcolor="black")


        self.Label1 = Label(master)
        self.Label1.place(relx=0.23, rely=0.24, height=19, width=20)
        self.Label1.configure(activebackground="#f9f9f9")
        self.Label1.configure(text='''a''')

        self.Label2 = Label(master)
        self.Label2.place(relx=0.23, rely=0.36, height=19, width=18)
        self.Label2.configure(activebackground="#f9f9f9")
        self.Label2.configure(text='''b''')

        self.Label3 = Label(master)
        self.Label3.place(relx=0.23, rely=0.47, height=19, width=13)
        self.Label3.configure(activebackground="#f9f9f9")
        self.Label3.configure(text='''c''')

        self.a_text = Text(master)
        self.a_text.place(relx=0.34, rely=0.24, relheight=0.06,
relwidth=0.38)
        self.a_text.configure(background="white")
        self.a_text.configure(font="TkTextFont")
        self.a_text.configure(selectbackground="#c4c4c4")
        self.a_text.configure(width=166)
        self.a_text.configure(wrap=WORD)

        self.b_text = Text(master)
        self.b_text.place(relx=0.34, rely=0.36, relheight=0.06,
relwidth=0.38)
        self.b_text.configure(background="white")
        self.b_text.configure(font="TkTextFont")
        self.b_text.configure(selectbackground="#c4c4c4")
        self.b_text.configure(width=166)
        self.b_text.configure(wrap=WORD)

        self.c_text = Text(master)
        self.c_text.place(relx=0.34, rely=0.47, relheight=0.06,
relwidth=0.38)
        self.c_text.configure(background="white")
        self.c_text.configure(font="TkTextFont")
        self.c_text.configure(selectbackground="#c4c4c4")
        self.c_text.configure(width=166)
        self.c_text.configure(wrap=WORD)

        self.Label4 = Label(master)
        self.Label4.place(relx=0.76, rely=0.24, height=19, width=54)
        self.Label4.configure(activebackground="#f9f9f9")
        self.Label4.configure(text='''-''')

        self.Label5 = Label(master)
        self.Label5.place(relx=0.76, rely=0.36, height=19, width=35)
        self.Label5.configure(activebackground="#f9f9f9")
        self.Label5.configure(text='''-''')

        self.Label6 = Label(master)
        self.Label6.place(relx=0.76, rely=0.47, height=19, width=19)
        self.Label6.configure(activebackground="#f9f9f9")
        self.Label6.configure(text='''-''')

        self.bCalcola = Button(master)
        self.bCalcola.place(relx=0.5, rely=0.71, height=27, width=68)
        self.bCalcola.configure(activebackground="#d9d9d9")
        self.bCalcola.configure(command=calcola_somma_support.calcola)
        self.bCalcola.configure(text='''Calcola''')

        self.bCancella = Button(master)
        self.bCancella.place(relx=0.25, rely=0.71, height=27, width=76)
        self.bCancella.configure(activebackground="#d9d9d9")
        self.bCancella.configure(command=calcola_somma_support.cancella)
        self.bCancella.configure(text='''Cancella''')

        self.bUscita = Button(master)
        self.bUscita.place(relx=0.73, rely=0.71, height=27, width=63)
        self.bUscita.configure(activebackground="#d9d9d9")
        self.bUscita.configure(command=calcola_somma_support.uscita)
        self.bUscita.configure(text='''Uscita''')

        self.Label7 = Label(master)
        self.Label7.place(relx=0.18, rely=0.09, height=19, width=299)
        self.Label7.configure(activebackground="#f9f9f9")
        self.Label7.configure(text='''Calcola la somma tra due numeri''')


    def calcola(self):
        DP=float(self.a_text.get("1.0",END))
        kv=float(self.b_text.get("1.0",END))
        tot=DP+kv
        self.c_text.insert(1.0, tot)



if __name__ == '__main__':
    vp_start_gui()




Page poi crea un altro file di supporto dove sono elencate le procedure
relative ai vari comandi (ovvero nel caso in cui vengano premuti i vari
pulsanti che ho messo):


#! /usr/bin/env python
#
# Support module generated by PAGE version 4.5
# In conjunction with Tcl version 8.6
#    Aug 18, 2015 06:41:00 PM


import sys

try:
    from Tkinter import *
except ImportError:
    from tkinter import *

try:
    import ttk
    py3 = 0
except ImportError:
    import tkinter.ttk as ttk
    py3 = 1


def calcola():
    print('calcola_somma_support.calcola')
    sys.stdout.flush()

def cancella():
    print('calcola_somma_support.cancella')
    sys.stdout.flush()

def uscita():
    print('calcola_somma_support.uscita')
    sys.stdout.flush()

def init(top, gui, arg=None):
    global w, top_level, root
    w = gui
    top_level = top
    root = top

def destroy_window():
    # Function which closes the window.
    global top_level
    top_level.destroy()
    top_level = None




La mia domanda è: come collego al pulsante "Calcola" la procedura "calcola"
contenuta nel file "calcola_somma_support.py" ?
Qualcuno può aiutarmi a completare il codice per renderlo funzionante ?
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20150818/b4aa6374/attachment.html>


Maggiori informazioni sulla lista Python