我已经四处寻找并且还没有真正找到问题的答案。
我正在尝试浏览文件以获取图像文件并使用其路径作为变量传递到我的qr函数,但是当使用文件对话框时它给了我这个
< _io.TextIOWrapper name ='C:/ Users / Elias / Desktop / New folder / IMG_2635.JPG'mode ='r'noding ='cp1252'>
而不是这个 C:/ Users / Elias / Desktop / New folder / IMG_2635.JPG有没有办法更好地做到这一点?
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 :(得分:3)
您正在使用var smtc = _player.SystemMediaTransportControls;
smtc.ButtonPressed += OnSMTCButtonPressed;
smtc.IsEnabled = true;
smtc.IsNextEnabled = true;
smtc.IsRecordEnabled = true;
。这会为您提供文件句柄。如果您只想要文件 name ,请使用filedialog.askopenfile()
。