Ich schaue mich mit einer einfachen, derzeit hässlichen GUI an, die mit Tkinter erstellt wurde, um zwei Variablen vom Benutzer zu erhalten. Nämlich einen Dateipfad und eine Auswahl aus einem Dropdown (OptionMenu).Zurückgeben von Variablen von Tkinter GUI
Die ausgewählten Variablen werden später im Python-Skript verwendet, wo ich Schwierigkeiten habe. Vereinfacht gesagt, wie man die Benutzerauswahl den Variablen zuordnet: Träger, Pfad.
Bitte siehe unten für Beispielcode:
from Tkinter import *
from tkFileDialog import askopenfilename
def Choose_Path():
Tk().withdraw()
return askopenfilename()
root = Tk()
root.geometry('400x400')
root.configure(background='#A2B5CD')
C_Label = Label(root, text='Carrier Choice:', bg='#A2B5CD', fg='black',font=('Calibri', 12))
C_Label.grid(row=0,sticky=W, padx =10)
I_Label = Label(root, text='Invoice Path:', bg='#A2B5CD', fg='black',font=('Calibri', 12))
I_Label.grid(row=1, sticky=W, padx =10)
var = StringVar(root)
var.set('Choose Carrier...')
option = OptionMenu(root, var, 'DHL','DPD','DX','Fedex','Geodis','Hermes','WN Direct')
option.config(relief=RAISED, highlightbackground='#A2B5CD')
option.grid(row=0,column=1, sticky=W, pady = 10)
browser = Button(root, text = 'Browse Invoice...', command=Choose_Path)
browser.grid(row=1, column=1, sticky=W, pady=10)
Button(root, text='Accept and Close').grid(column=1, sticky=S)
root.mainloop()
Jedes Feedback geschätzt würde. Danke im Voraus.
Vielen Dank für die schnelle Antwort! Also muss ich eine root.exit() hinzufügen, um mit der nächsten Zeile meines Skripts fortzufahren? Ich habe die root.exit() zu dem Befehl der Schaltfläche zum Akzeptieren und Schließen hinzugefügt .... Drucken options.get() druckt immer noch nichts, obwohl:/Ich habe auch die return-Anweisung zu dem, was Sie vorgeschlagen, aber immer noch verwirrt Wie greife ich später auf diese Variable zu? –
Sie können möglicherweise vermeiden, root.mainloop zu verwenden, indem Sie stattdessen root.update verwenden. Ich habe jedoch nicht mit dem Dateidialog und OptionMenu experimentiert. –
@Luke: eigentlich lag ich falsch bei 'option.get()' - das sollte 'var.get()' sein. Sie müssen das Ergebnis später in einer Variablen speichern (fügen Sie zum Beispiel am Ende Ihres Codes 'carrier = var.get()' hinzu. Ich bin mir nicht sicher, woher die Verwirrung über den Pfad kommt. Versuchen Sie, 'path = [None]' am Anfang Ihres Codes hinzuzufügen, und dann 'path [0] = askopenfilename()' innerhalb 'Choose_Path'. Am Ende Ihres Codes wird 'path = path [0]' dann den Pfad erhalten. (Ich benutze eine Liste, um zu vermeiden, dass man hier Globals deklariert. Nicht unbedingt optimal.) – acdr