2016-10-10 1 views
0

Ich habe gesucht und habe die Antwort auf mein Problem noch nicht wirklich gefunden.Tkinter filialialog in einem Dateipfad lesen

Ich versuche, um die Dateien zu durchsuchen in einer Bilddatei und eine Verwendung seines Weg als eine Variable nehmen in meine qr Funktion zu übergeben, aber wenn die Datei-Dialog es gibt mir diesen

< _io.TextIOWrapper Namen = 'C:/Users/Elias/Desktop/Neuer Ordner/IMG_2635.JPG' mode = 'r' encoding = 'cp1252'>

anstatt diese C:/Users/Elias/Desktop/Neuer Ordner/IMG_2635 .JPG

Gibt es eine Möglichkeit, dies besser zu tun?

import tkinter as tk 
from tkinter import ttk 
from MyQR import myqr 
from tkinter import filedialog 
import os 

LARGE_FONT = ("Verdana", 12) 

class QRgenerator(tk.Tk): 

    def __init__(self, *args, **kwargs): 
     tk.Tk.__init__(self, *args, **kwargs) 
     container = tk.Frame(self) 

     tk.Tk.wm_title(self,"CST-205-Project2") 
     container.pack(side = "top", fill = "both", expand = True) 

     container.grid_rowconfigure(0,weight = 1) 
     container.grid_columnconfigure(0,weight = 1) 

     self.frames = {} 

     for f in (StartPage,PageOne,QR1,QR2): 

      frame = f(container, self) 

      self.frames[f] = frame 

      frame.grid(row = 0, column = 0, sticky = "nsew") 

     self.show_frame(StartPage) 

    def show_frame(self,cont): 
     frame = self.frames[cont] 
     frame.tkraise() 

def qr_2(size,url_in,path): 
    print('\n\n\n\n1 being smaller \n40 being bigger') 
    num = size 
    # url = 'https://www.instagram.com/jayrfitz/?hl=en' 
    url = url_in 
    pic = path 

    version, level, qr_name = myqr.run(
     words=url, 
     version=num, 
     level='H', 
     picture=pic, 
     colorized=True, 
     contrast=1.0, 
     brightness=1.0, 
     save_name=None, 
    #outputdirectory I deleted but we can set it here 
     ) 

class StartPage(tk.Frame): 

    def __init__(self,parent,controller): 
     tk.Frame.__init__(self,parent) 
     label = ttk.Label(self,text = "start page", font = LARGE_FONT) 
     label.pack(pady = 10, padx = 10) 

     button1 = ttk.Button(self,text = "next page", command = lambda: controller.show_frame(PageOne)) 
     button1.pack() 
class PageOne(tk.Frame): 
    def __init__(self,parent,controller): 
     tk.Frame.__init__(self,parent) 
     label = ttk.Label(self,text = "Page One", font = LARGE_FONT) 
     label.pack(pady = 10, padx = 10) 

     button1 = ttk.Button(self,text = "Option1", command = lambda: controller.show_frame(QR1)) 
     button1.place(x = 0, y = 0) 

     button2 = ttk.Button(self,text = "Option2", command = lambda: controller.show_frame(QR2)) 
     button2.place(x = 425, y = 0) 
class QR1(tk.Frame): 

    def __init__(self,parent,controller): 
     URLin = ' ' 
     Size = 1 
     filePath = ' ' 

     def submit(): 
      content = url_entry.get() 
      URLin = content 
      print(URLin) 
     def submit2(): 
      content = size_entry.get() 
      Size = content 
      print(Size) 

     def Browse(): 
      filename = filedialog.askopenfile() 
      filePath = filename 
      print(filePath) 

     tk.Frame.__init__(self,parent) 
     label = ttk.Label(self,text = "start page", font = LARGE_FONT) 
     label.pack() 

     label = ttk.Label(self,text = "start page", font = LARGE_FONT) 
     button1 = ttk.Button(self,text = "Page 1", command = lambda: controller.show_frame(PageOne)) 
     button1.place(x = 0, y = 450) 

     url_label = ttk.Label(self,text = "Enter URL in box", font = LARGE_FONT) 
     url_label.place(x = 100, y = 25) 

     submit1 = ttk.Button(self,text = "submit", command = submit) 
     submit1.place(x = 0, y = 25) 

     url_entry = ttk.Entry(self,width = 50) 
     url_entry.place(x = 0, y = 100) 

     submit2 = ttk.Button(self,text = "submit", command = submit2) 
     submit2.place(x = 0, y = 150) 

     size_label = ttk.Label(self,text = "Enter the size of the QR code", font = LARGE_FONT) 
     size_label.place(x = 100, y = 150) 

     size_entry = ttk.Entry(self,width = 50) 
     size_entry.place(x = 0, y = 200) 

     file_label = ttk.Label(self,text = "Press Browse to locate file or enter and click submit", font = LARGE_FONT) 
     file_label.place(x = 0, y = 350) 
     FileBrowse = ttk.Button(self,text = "Browse",command = Browse,) 
     FileBrowse.place(x = 0, y= 250) 

     file_ent = ttk.Entry(self,width = 50, text = filePath) 
     file_ent.place(x = 0, y = 300) 



     run = ttk.Button(self,text = "Run", command = lambda: qr_2(Size,URLin,filePath)) 
     run.place(x = 0, y = 400) 




class QR2(tk.Frame): 

    def __init__(self,parent,controller): 
     tk.Frame.__init__(self,parent) 
     label = ttk.Label(self,text = "start page", font = LARGE_FONT) 
     label.pack(pady = 10, padx = 10) 

     button1 = ttk.Button(self,text = "next page", command = lambda: controller.show_frame(PageOne)) 
     button1.pack() 


app = QRgenerator() 
app.geometry("500x500") 
app.mainloop() 
+0

Bitte den Code abschneiden. Wenn das Problem bei der Datei g liegt, können Sie wahrscheinlich 90% des Codes entfernen. Siehe http://www.stackoverflow.com/help/mcve –

+0

@BryanOakley - 'Datei gewählt g'? Vielleicht von deinem Handy aus schreiben? : P – TigerhawkT3

Antwort

3

Sie verwenden filedialog.askopenfile(). Dies gibt Ihnen eine Datei Handle. Wenn Sie nur die Datei mit dem Namen möchten, verwenden Sie filedialog.askopenfilename().

Verwandte Themen