我使用 pyinstaller 創建了一個獨立的 .app 應用程式(ToDoList.py / ToDoList.app / ToDoList (Unix Executable))。我的代碼使用一個名為 List.tx 的檔案來記住和存盤放在螢屏上的資料。沒有該檔案,程式無法運行。我在將檔案放入捆綁包時遇到問題,但最近我對 .app 進行了一些挖掘,發現當我使用“pyinstaller ToDoList.py --add-data”List.txt 時它會添加 List.txt 檔案: ." --windowed"。List.txt 檔案放在與 unix 可執行檔案平行的資源檔案夾中,現在我需要找到一種方法來使用我的程式訪問它。我將附上螢屏截圖和我的代碼。如果有人可以提供幫助,將不勝感激!
我的代碼:
import tkinter as tk
from tkinter import *
open = open("List.txt", "r ")
file = open.readlines ()
def main ():
window = Tk()
window.title("To Do")
def window_destroy ():
window.destroy()
window.geometry ("1440x808 0 0")
to_do_label = Label(window, text="To Do List:", font=("Times New Roman",25,))
to_do_label.place(relx=.5, y=20, anchor=CENTER)
to_do_listbox = Listbox(window, width=50, height=20)
for i in range(len(file)):
to_do_listbox.insert(tk.END, str(file[i].strip()))
to_do_listbox.place(relx=.5, y=230, anchor=CENTER)
def delete_selected_item ():
to_do_listbox.delete(tk.ANCHOR)
for i in range(to_do_listbox.size()):
open.truncate(i)
for i in range(to_do_listbox.size()):
open.write(to_do_listbox.get(i) "\n")
add_entry = Entry(window, width=50, font=("Times New Roman", 15))
add_entry.place(relx=.5, y=425, anchor=CENTER)
def add_entry_to_list ():
to_do_listbox.insert(tk.END, add_entry.get())
for i in range(to_do_listbox.size()):
open.truncate(i)
for i in range(to_do_listbox.size()):
open.write(to_do_listbox.get(i) "\n")
add_button = Button(window, text="Add item", width=10, font=("Times New Roman", 15), command=add_entry_to_list)
add_button.place(relx=.5, y=455, anchor=CENTER)
delete_button = Button(window, text="Delete item", width=10, font=("Times New Roman", 15), command=delete_selected_item)
delete_button.place(relx=.5, y=485, anchor=CENTER)
quit_button = Button(window, text = "Quit", width=5, font=("Times New Roman",15), command=window_destroy)
quit_button.pack(anchor = "s", side = "right")
window.mainloop()
main ()
檔案夾照片
uj5u.com熱心網友回復:
您應該能夠使用這樣的代碼來打開您的檔案:
import sys
from pathlib import Path
...
if getattr(sys, 'frozen', False):
folder = Path(sys._MEIPASS)
else:
folder = Path(__file__).parent
open = open(folder / "List.txt", "r ")
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/405993.html
標籤:
