TypeError: startfile: filepath должен быть строкой, байтами или os.PathLike, а не _io.TextIOWrapper - PullRequest
0 голосов
/ 09 февраля 2020
import tkinter as tk
from tkinter import filedialog, Text
import os

root = tk.Tk()

apps = []

def addApp():

    for widget in frame.winfo_children():
        widget.destroy()
    filename = filedialog.askopenfile(initialdir="/", title="Select File",
    filetypes=(("executables","*.exe"),("all files", "*.*")))
    apps.append(filename)
    print(filename)

    for app in apps:
        label= tk.Label(frame, text = app, bg="gray")
        label.pack()

def runApps():

    for app in apps:
        os.startfile(app)

canvas=tk.Canvas(root,height=700, width=700,bg="#263d42")

canvas.pack()



frame= tk.Frame(root, bg="white")

frame.place(relwidth=0.8, relheight=0.8,relx = 0.1, rely=0.1)


openFile = tk.Button(root, text = "Open File", padx = 10, pady=5, fg="white", bg="#263d42",command=addApp)

openFile.pack()


runApps = tk.Button(root, text = "Run Apps", padx = 10, pady=5, fg="white", bg="#263d42", command=runApps)

runApps.pack()


root.mainloop()

1 Ответ

0 голосов
/ 09 февраля 2020

Функция filedialog.askopenfile() возвращает объект файла, а не его имя. Чтобы получить имя файла, используйте filedialog.askopenfilename().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...