2017-01-19 2 views
0

Ich versuche, den Benutzer nach dem Speicherort für die Datei zu suchen, um die Excel-Daten abzurufen. Bis jetzt funktioniert die Broswe-Funktion und wird als Etikett angezeigt, aber das Etikett auf die Funktion einer der Schaltflächenoptionen wie texas() zurückzuführen, funktioniert nicht. Der folgende Fehler ich aus der Schale erhalten ist:Tkinter Fehler: nicht unterstützte Operandentypen für +: 'instance' und 'str'

"unsupported operand type(s) for +: 'instance' and 'str'"

Wie konvertiere ich das Label Wert String und damit es funktioniert?

Code:

from Tkinter import * 

import tkFileDialog 

import sys 
if sys.version_info[0] < 3: 
    import Tkinter as Tk 
else: 
    import tkinter as Tk 

import os 
import tkMessageBox 
root = Tk.Tk() 
root.title("Excel Map Conversion") 
root.geometry("450x400")# width x height 

def browse_gainInfo(): 
    currentDir = os.getcwd() 
    fname = tkFileDialog.askdirectory(parent=root, initialdir=currentDir, title="Please Select the Folder for Map Data Input") 
    pathlabel.config(text=fname) 

filepath = StringVar() 

def texas(): 
    os.startfile(browseLink + '/Texas/Texas_conversion.py') 

def state(): 
    os.startfile(filepath.get() + '\State\StateConv.py') 

def college(): 

    os.startfile(filepath.get() + '\College\CollegeConv.py') 

def underGrad(): 
    os.startfile(filepath.get() + '\Undergraduate\undergrad_conversion.py') 

def grad(): 
    os.startfile(filepath.get()+ '\Graduate\graduate_conversion.py') 

browseLabel = Label(root, text="Browse for source of Map Data").pack() 
browse1 = Tk.Button(root, text='Browse', width =6, command = browse_gainInfo) 
browse1.pack() 
pathlabel= Label(root) 
pathlabel.pack() 

browseLink = StringVar(pathlabel) 

label = Label(root, text="\nEnter in the filepath for the map files: \n").pack() 
link = Entry(root, textvariable = filepath).pack() 


label2 = Label(root, text ="\n\tPlease select from the following options:\n").pack() 

button1 = Button(root, text = "College", command = college).pack() 

button2 = Button(root, text= "State", command = state).pack() 

button3 = Button(root, text="Texas", command = texas).pack() 

button4 = Button(root, text ="Undergraduate", command = underGrad).pack() 

button5 = Button(root, text ="Graduate", command = grad).pack() 



#kick off the event loop 
root.mainloop() 
+0

Haben Sie die Dokumentation zu 'StringVar' gelesen? Der Wert wird dokumentiert. –

+1

Sie tun dasselbe für 'browselink', das Sie für' filepath' gemacht haben. – chepner

+0

Leicht habe ich den Abschnitt Detaillierung Set-Funktion und alle gelesen, aber ich habe versucht, mit einer Set-Funktion auf den Wert und funktioniert nicht –

Antwort

0

Vom tkinterbook:

Note that the StringVar() constructor takes an optional widget argument, but no value argument; to set the value, call the set method:

var = StringVar() 
var.set("hello") 

The constructor argument is only relevant if you’re running Tkinter with multiple Tk instances (which you shouldn’t do, unless you really know what you’re doing).

Es ist wahrscheinlich nicht notwendig für das, was Sie tun. Ich bin nicht 100% was du versuchst zu tun ... aber es scheint so als würdest du versuchen, eine textvariable auf Umwegen zu erstellen.

+0

Im Wesentlichen versuche ich den Verzeichnispfad, den ich durch die Variable/label" pathlabel "angegeben habe, zu bekommen und zu bekommen Dieser Pfad wird als Zeichenfolgenwert übersetzt, damit ich ihn in der texas() - Funktion verwenden kann. –

+0

Oh, versuche, 'browseLink' zu 'browseLink.get()' in texas() zu ändern. Auch Backslashes und Forward Slashes benötigen etwas Arbeit. – Jeesubmunu

+0

Es gibt einen leeren Wert zurück, so dass nur nach dem Zeichenfolgenwert für den Speicherort der Datei gesucht wird ('Texas/Texas_conversion.py') Im Wesentlichen gibt browseLink.get() also einen leeren Wert zurück –

Verwandte Themen