Python 2.7 Tkinter come passare un array in un’altra funzione

con un pulsante (envoi) apro una nuova finestra e scrivo valori di elementi in un array (scelte). dopo aver chiuso questa finestra e chiamato una funzione (window2). voglio leggere scelte in questa funzione Se scrivo scelte di stampa.get (), Ho un errore: nome globale ‘scelte’ non è definito

# -*- coding: utf-8 -*-
from Tkinter import *

root = Tk()
group = LabelFrame(root, text=" 1. Paramètrage: ")

group.grid(row=0, columnspan=5, sticky='W', \
          padx=5, pady=5, ipadx=5, ipady=5)

dropVar2=StringVar()
dropVar2.set("----")
opt3 = OptionMenu(group, dropVar2, '----', 'Pondéraux', 'Atomiques')
opt3.grid(row=4, column=1, columnspan=7, sticky='WE', padx=5, pady=2)

def state():
    if dropVar2.get()=='Atomiques':
        winE=Toplevel(root)
        group = LabelFrame(winE, text="Pourcentages atomiques", padx=5,pady=5)
        group.pack(padx=25, pady=25)

        entries = []
        j = 0
        choices = ['C', 'Ni', 'Co', 'Fe', 'Cr', 'Al', 'Ti', 'Ta', 'Nb',
               'Hf', 'V', 'Re', 'Mo', 'W', 'B', 'Zr', 'Mg', 'Y']
        while j < len(choices) :
            valeurOneLabel = Label(group, text=choices[j])
            valeurOneLabel.grid(row=j+1, column=0, columnspan=1, sticky='WE', padx=5, pady=2)
            en = Entry(group, text="")
            en.grid(row=j+1, column=1)
            entries.append(en)
            j+=1
        for s in range(len(choices)):
            choices[s] = entries[s]

        exitButton = Button(winE, text = 'Close', command = lambda:  window2(winE)).pack()


def window2(winE):
    winA=Toplevel(root)
    winA.geometry('400x600+600+50')
    print choices.get()
    winE.destroy()

Button(group, text='envoi', command = state).grid(row=5, column=0)




root.geometry("450x350+100+100")
root.title("Développement d'alliages")
root.mainloop()

EN From: python 2.7 Tkinter how to pass an array in another function

More similar articles:

1 Comment

  1. come PM 2Ring ha detto sopra choices è una variabile locale a state(), questo significa che window2() non conosce qualsiasi list chiamato choices.

    ci sono alcune soluzioni:

    prima e forse il meno raccomandato, si potrebbe fare choices una variabile globale che sarebbe accessibile da qualsiasi parte. questo potrebbe portare a nominare i conflitti e può rendere più frustrante tornare indietro e cambiare questo codice in seguito.

    in secondo luogo, quando si dichiara il widget Button che chiama window2() si potrebbe aggiungere choices come parametro da passare alla funzione.

    in terzo luogo e personalmente il più raccomandato, si potrebbe riscrivere la GUI per includere un class che permetterebbe di avere variabili locali alla classe che può essere letta da qualsiasi funzione.

Leave a Reply

Your email address will not be published. Required fields are marked *