我使用pyinstaller创建了一个独立文件,当我尝试运行已编译的程序时,该文件未运行,而是给了我一个“无法执行脚本界面消息”
这是我的代码:
from tkinter import *
import mbl_db
def select_row(event):
try:
global selected
index = content_list.curselection()[0]
selected = content_list.get(index)
tit_entry.delete(0,END)
tit_entry.insert(END,selected[1])
auth_entry.delete(0,END)
auth_entry.insert(END,selected[2])
year_entry.delete(0,END)
year_entry.insert(END,selected[3])
isbn_entry.delete(0,END)
isbn_entry.insert(END,selected[4])
except IndexError:
pass
def view_command():
content_list.delete(0,END)
for data in mbl_db.view():
content_list.insert(END,data)
def search_command():
content_list.delete(0,END)
for data in mbl_db.search(tit_text.get(),auth_text.get(),year_text.get(),isbn_text.get()):
content_list.insert(END,data)
def add_command():
mbl_db.add(tit_text.get(),isbn_text.get())
content_list.delete(0,END)
content_list.insert(END,(tit_text.get(),isbn_text.get()))
def delete_command():
mbl_db.delete(selected[0])
def update_command():
mbl_db.update(selected[0],tit_text.get(),isbn_text.get())
# The main app window
app_interface = Tk()
app_interface.title("My Books List")
app_interface.iconbitmap("icon.ani")
# The app's label widgets
tit_label = Label(app_interface,text="Title")
tit_label.grid(row=0,column=0)
auth_label = Label(app_interface,text="Author")
auth_label.grid(row=0,column=2)
year_label = Label(app_interface,text="Year")
year_label.grid(row=1,column=0)
isbn_label = Label(app_interface,text="ISBN")
isbn_label.grid(row=1,column=2)
# The app's entry widgets
tit_text = StringVar()
tit_entry = Entry(app_interface,textvariable=tit_text)
tit_entry.grid(row=0,column=1)
auth_text = StringVar()
auth_entry = Entry(app_interface,textvariable=auth_text)
auth_entry.grid(row=0,column=3)
year_text = StringVar()
year_entry = Entry(app_interface,textvariable=year_text)
year_entry.grid(row=1,column=1)
isbn_text = StringVar()
isbn_entry = Entry(app_interface,textvariable=isbn_text)
isbn_entry.grid(row=1,column=3)
# The content list and scrollbar
content_list = Listbox(app_interface,height=6,width=35)
content_list.grid(row=2,column=0,columnspan=2,rowspan=6)
scr_bar = Scrollbar(app_interface)
scr_bar.grid(row=2,column=2,rowspan=6)
content_list.configure(yscrollcommand=scr_bar.set)
scr_bar.configure(command=content_list.yview)
content_list.bind('<<ListboxSelect>>',select_row)
# The buttons
view_all_btn = Button(app_interface,text="View All",width=12,command=view_command)
view_all_btn.grid(row=2,column=3)
search_btn = Button(app_interface,text="Search",command=search_command)
search_btn.grid(row=3,column=3)
add_btn = Button(app_interface,text="Add",command=add_command)
add_btn.grid(row=4,column=3)
update_btn = Button(app_interface,text="Update",command=update_command)
update_btn.grid(row=5,column=3)
del_btn = Button(app_interface,text="Delete",command=delete_command)
del_btn.grid(row=6,column=3)
close_btn = Button(app_interface,text="Close",command=app_interface.destroy)
close_btn.grid(row=7,column=3)
app_interface.mainloop()
我导入的mbl_db脚本上的代码如下:
import sqlite3
def create():
mbl_conn = sqlite3.connect("mbl.db")
mbl_cur = mbl_conn.cursor()
mbl_cur.execute("CREATE TABLE IF NOT EXISTS books(id INTEGER PRIMARY KEY,title TEXT,author TEXT,year INTEGER,isbn TEXT)")
mbl_conn.commit()
mbl_conn.close()
def add(title,author,year,isbn):
mbl_conn = sqlite3.connect("mbl.db")
mbl_cur = mbl_conn.cursor()
mbl_cur.execute("INSERT INTO books VALUES(NULL,?,?)",(title,isbn))
mbl_conn.commit()
mbl_conn.close()
def view():
mbl_conn = sqlite3.connect("mbl.db")
mbl_cur = mbl_conn.cursor()
mbl_cur.execute("SELECT * FROM books")
data = mbl_cur.fetchall()
mbl_conn.close()
return data
def search(title="",author="",year="",isbn=""):
mbl_conn = sqlite3.connect("mbl.db")
mbl_cur = mbl_conn.cursor()
mbl_cur.execute("SELECT * FROM books WHERE title=? OR author=? OR year=? OR isbn=?",isbn))
data = mbl_cur.fetchall()
mbl_conn.close()
return data
def delete(id):
mbl_conn = sqlite3.connect("mbl.db")
mbl_cur = mbl_conn.cursor()
mbl_cur.execute("DELETE FROM books WHERE id=?",(id,))
mbl_conn.commit()
mbl_conn.close()
def update(id,title,isbn):
mbl_conn = sqlite3.connect("mbl.db")
mbl_cur = mbl_conn.cursor()
mbl_cur.execute("UPDATE books SET title=?,author=?,year=?,isbn=? WHERE id=?",isbn,id))
mbl_conn.commit()
mbl_conn.close()
create()
我还从https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz安装了pyinstaller,因为由于安装了pyinstaller软件包,我之前遇到了问题。
如何解决此错误消息?