- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试制作我的程序的可执行文件以提供给我的 FTC 团队。一切正常,但是当我尝试使用包含 python-docx 的脚本时,它并没有完成整个事情。当我在 PyCharm 中和从终端运行它时它可以工作。这是代码。我有python3.
from tkinter import *
import sys,math,random,datetime,os,time
import tkinter.messagebox
from tkinter import filedialog
from tkinter.filedialog import askopenfilename
from tkinter.messagebox import showerror
from time import gmtime, strftime
from docx import Document
from docx.shared import Inches
import xlsxwriter
export = "Excel"
job = "No Job"
current_time = strftime("%m-%d-%Y", gmtime())
root = Tk()
TextArea = Text(width=60,height=17,pady=0)
task = Entry(width=90)
task.insert(10, "Task:")
e1 = Entry()
e1.insert(10, "First Name")
e2 = Entry()
e2.insert(10, "Last Name")
TextArea.insert(END, "Reflection:")
title = ["Titan Tech ", "Caleb Fahlgren made this!", "Python is life!", "FIRST Robotics!","This program is over 200 lines of code!"]
title = (random.choice(title))
root.title(title)
root.geometry("680x600")
#Submit Button
#This definition writes to the excel file
def Submit():
submit = tkinter.messagebox.askquestion("Submit Entry", "Are you sure you want to submit?")
if submit == "yes":
current_time = strftime("%m-%d-%Y %H:%M", gmtime())
fullname = "%s %s" % (e1.get(), e2.get())
lastname = "%s" % (e2.get())
task1 = "%s" % (task.get())
alltext = TextArea.get("1.0",END)
workbook = xlsxwriter.Workbook('Titan Tech ' + (strftime("%m-%d-%Y", gmtime())) + '.xlsx')
worksheet = workbook.add_worksheet()
format_text = workbook.add_format()
format_text.set_text_wrap()
cell_format = workbook.add_format({'align': 'center','valign': 'vcenter','border': 1,'text_wrap': 1})
middle = workbook.add_format({'align':'center'})
worksheet.merge_range('A5:G20', "", cell_format)
worksheet.merge_range('A4:G4', "", cell_format)
bold = workbook.add_format({'bold': 1})
worksheet.write('A1', 'Name:',bold)
worksheet.write('A4', task1)
worksheet.write_string('B1',fullname, bold)
worksheet.merge_range('A2:B2', "", cell_format)
worksheet.merge_range('D2:E2', "", cell_format)
worksheet.write_string('A2',"Student Initials")
worksheet.write_string('C2',"_______",middle)
worksheet.write_string('D2',"Mentor Initials")
worksheet.write_string('F2',"_______",middle)
worksheet.write('E1', 'Date:',bold)
worksheet.write('F1',(strftime("%m-%d-%Y", gmtime())),bold)
worksheet.write_rich_string('A5',alltext ,cell_format)
userconfirm = tkinter.messagebox.showinfo("Save","Your entry has been saved to an " + export + " document!")
workbook.close()
def Reset():
python = sys.executable
os.execl(python, python, * sys.argv)
def keypress(event):
if event.keysym == 'Escape':
root.destroy()
def Quit():
quitask = tkinter.messagebox.askquestion("Quit", "Are you sure you want to quit?")
if quitask == "yes":
root.destroy()
firstname = Label(root, text="First Name",font=("Helvetica", 12),fg="green")
lastname = Label(root, text="Last Name",font=("Helvetica", 12),fg="green")
time = Label(root, text=current_time, font=("Helvetica", 12),fg="black")
ScrollBar = Scrollbar(root)
ScrollBar.config(command=TextArea.yview)
TextArea.config(yscrollcommand=ScrollBar.set)
ScrollBar.pack(side=RIGHT, fill=Y)
def cf():
e1.delete(0, 'end')
e2.delete(0, 'end')
e1.insert(10, "Sample")
e2.insert(10, "Name 1")
def al():
e1.delete(0, 'end')
e2.delete(0, 'end')
e1.insert(10, "Sample")
e2.insert(10, "Name 2")
def cm():
e1.delete(0, 'end')
e2.delete(0, 'end')
e1.insert(10, "Sample")
e2.insert(10, "Name 3")
def np():
e1.delete(0, 'end')
e2.delete(0, 'end')
e1.insert(10, "Sample")
e2.insert(10, "Name 4")
def cp():
e1.delete(0, 'end')
e2.delete(0, 'end')
e1.insert(10, "Sample")
e2.insert(10, "Name 5")
def ns():
e1.delete(0, 'end')
e2.delete(0, 'end')
e1.insert(10, "Sample")
e2.insert(10, "Name 6")
def ct():
e1.delete(0, 'end')
e2.delete(0, 'end')
e1.insert(10, "Sample")
e2.insert(10, "Name 7")
def kt():
e1.delete(0, 'end')
e2.delete(0, 'end')
e1.insert(10, "Sample")
e2.insert(10, "Name 8")
def mt():
e1.delete(0, 'end')
e2.delete(0, 'end')
e1.insert(10, "Sample")
e2.insert(10, "Name 9")
def ek():
e1.delete(0, 'end')
e2.delete(0, 'end')
e1.insert(10, "Sample")
e2.insert(10, "Name 10")
def n():
e1.delete(0, 'end')
e2.delete(0, 'end')
e1.insert(10, "Team")
e2.insert(10, "Name")
def other():
e1.delete(0, 'end')
e2.delete(0, 'end')
def TextFile():
current_time = strftime("%m-%d-%Y", gmtime())
fullname = "%s %s" % (e1.get(), e2.get())
lastname = "%s" % (e2.get())
task1 = "%s" % (task.get())
alltext = TextArea.get("1.0",END)
textfile1 = tkinter.messagebox.askquestion("Text File", "Are you sure you want to export as a text file?")
if textfile1 == "yes":
textfile = open('Titan Tech' + (strftime("%m-%d-%Y", gmtime())) + '.txt',"w")
textfile.write("Titan Tech | Team # 10385 ")
textfile.write("Name: " + fullname)
textfile.write(" " + "Date: " + current_time)
textfile.write('\n' + '\n' + task1)
textfile.write('\n' + '\n' + alltext)
textfile.close()
tkinter.messagebox.showinfo("Save", "You have exported to text file successfully. It is in the location of this program.")
def helpmenusave():
helpsaveconfirm = tkinter.messagebox.showinfo("Save", "This program exports the Excel, World, or text document to the location of this program!")
def userinterfacemenu():
helpuserinterface = tkinter.messagebox.showinfo("User Interface", "The Users tab is where you can click on your name to autofill the name text boxes. The Export tab is where you choose to export to a specific format.")
def Open():
textopen = tkinter.filedialog.askopenfile(mode='r', filetypes=[('Text Files', '*.txt'),('All Files', '*')])
if textopen != None:
txtopen = textopen.read()
TextArea.delete(1.0,END)
TextArea.insert(END,txtopen)
tkinter.messagebox.showinfo("Open", "Success!")
try:
txtopen.close()
except AttributeError:
print("Attribute Error")
menubar = Menu(root)
filemenu = Menu(menubar,tearoff = 0)
filemenu.add_command(label="New",command=Reset)
filemenu.add_command(label="Open",command=Open)
filemenu.add_command(label="Exit",command=Quit)
menubar.add_cascade(label="File",menu=filemenu)
#help menu
helpmenu = Menu(menubar,tearoff = 0)
helpmenu.add_command(label="None", command=n)
helpmenu.add_command(label="Sample Name 1", command=cf)
helpmenu.add_command(label="Sample Name 2", command=al)
helpmenu.add_command(label="Sample Name 3", command=cm)
helpmenu.add_command(label="Sample Name 4", command=np)
helpmenu.add_command(label="Sample Name 5",command=cp)
helpmenu.add_command(label="Sample Name 6",command=ns)
helpmenu.add_command(label="Sample Name 7",command=ct)
helpmenu.add_command(label="Sample Name 8",command=kt)
helpmenu.add_command(label="Sample Name 9",command=mt)
helpmenu.add_command(label="Sample Name 10", command=ek)
helpmenu.add_command(label="Other", command=other)
menubar.add_cascade(label="Users",menu=helpmenu)
这就是问题所在。它在 Pycharm 和终端中工作,但是当我用 PyInstaller 编译它时,它只执行 Wordsaveask = tkinter.messagebox.askquestion 行,但其下不执行任何操作。它应该创建 Word 文件,但没有。我也没有收到任何错误消息。
def Word():
current_time = strftime("%m-%d-%Y", gmtime())
lastname = "%s" % (e2.get())
fullname = "%s %s" % (e1.get(), e2.get())
task1 = "%s" % (task.get())
alltext = TextArea.get("1.0",END)
wordsaveask = tkinter.messagebox.askquestion("Save", "Are you sure you want to export to a Microsoft Word file?")
if wordsaveask == ("yes") :
document = Document()
document.add_heading('FTC Titan Tech Summary', 0)
document.add_paragraph('Titan Tech | Team # 10385')
document.add_paragraph('Mentor Initials ____ Student Initials _____')
document.add_paragraph('Name: ' + fullname)
document.add_paragraph('Date: ' + current_time)
document.add_paragraph(task1)
document.add_paragraph(alltext)
document.save('Titan Tech ' + (strftime("%m-%d-%Y", gmtime())) + '.docx')
tkinter.messagebox.showinfo('Save', 'The program has exported the information to a Microsoft Word document!')
#export
exportmenu = Menu(menubar, tearoff = 0)
exportmenu.add_command(label="Microsoft Excel",command=Submit)
exportmenu.add_command(label="Microsoft Word",command=Word)
exportmenu.add_command(label="Text File",command=TextFile)
menubar.add_cascade(label="Export",menu=exportmenu)
helpmenu = Menu(menubar, tearoff = 0)
helpmenu.add_command(label="Save Help", command=helpmenusave)
helpmenu.add_command(label="User Interface", command=userinterfacemenu)
menubar.add_cascade(label="Help",menu=helpmenu)
root.config(menu=menubar)
Submit = Button(root, fg="white", bg="green", text="Submit", width=50, command=Submit, activebackground="yellow")
Quit = Button(root, fg="white", bg="green", text="Quit", width=50, command=Quit,activebackground="yellow")
root.bind_all('<Key>', keypress)
firstname.pack()
e1.pack()
lastname.pack()
e2.pack()
time.pack()
task.pack()
TextArea.pack(expand=YES, fill=BOTH)
Submit.pack()
Quit.pack()
mainloop()
最佳答案
Pyinstaller 不包含 docx 模块(我有同样的问题,我会为其他人编写它,因为我找不到正确的教程如何修复它)
如果您安装了 Pyinstaller,请在 cmd 中使用:
pyi-makespec your_py_file_name.py
此命令创建 .spec 文件,但不会继续构建可执行文件。
在记事本中打开 .spec 文件并通过添加以下内容进行编辑:
import sys
from os import path
site_packages = next(p for p in sys.path if 'site-packages' in p)
还有
datas=[(path.join(site_packages,"docx","templates"), "docx/templates")],
我的示例 .spec 文件如下所示
# -*- mode: python -*-
import sys
from os import path
site_packages = next(p for p in sys.path if 'site-packages' in p)
block_cipher = None
a = Analysis(['xml_reader.py'],
pathex=['C:\\Users\\Lenovo\\Desktop\\exe'],
binaries=[],
datas=[(path.join(site_packages,"docx","templates"),
"docx/templates")],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
exclude_binaries=True,
name='xml_reader',
debug=False,
strip=False,
upx=True,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
name='xml_reader')
在cmd中输入exe文件
pyinstaller your_py_file_name.spec
它应该生成 dist 文件夹,其中包含您的可执行文件
关于python - PyInstaller 和 python-docx 模块不能一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35642322/
我想要的是能够在输入获得焦点或失去焦点时执行某些操作(两个事件)。 我尝试了以下方法,但这按事件单独工作(单独编码时):仅在焦点上,或仅在失去焦点时。 另外,我希望它尽可能跨平台(包括触摸设备),这是
我分别研究了TableView的Filtering和Pagination。 过滤: this帖子帮助我满足了我的需要 分页: this , this帖子也帮助了我 我想像这样将它们组合在一起: 详情-
我是 TDD 方法的新手,所以我想知道是否有人经历过这种机智可以启发我一点。我想获得一些关于如何一起使用 UML 和 TDD 方法的线索。 我已经习惯了:用 UML 设计 --> 生成骨架类(然后保持
我尝试使用入口点和 cmd 设置 Docker。 FROM debian:stretch RUN apt-get update && \ apt install gnupg ca-certificat
我想要一个 Class 对象,但我想强制它所代表的任何类扩展类 A 并实现接口(interface) B。 我能做到: Class 或者: Class 但我不能两者兼得。有办法做到这一点吗? 最佳答案
我是 Rubymine 的长期用户。 Rubymine 非常适合基于 html 的 Rails 应用程序,但我现在正在做更多的 SPA 客户端工作(例如 javascript/react)。我发现我真
我注意到我使用的某个脚本依赖于原型(prototype)。 (Lightbox 2) 它会与 jQuery 在同一页面上一起工作吗?有没有办法确保它们不冲突? 最佳答案 可以,但你需要采取 speci
我需要对表中显示的数据进行分页并通过 ajax 调用获取它 - 这是我通过使用具有以下配置的 dataTables 插件来完成的 - bServerSide : true; sAjaxSource :
我是 gtk 新手,所以想知道在 C 语言中归档和 gtk 是否可以一起使用?例如,我可以从 .txt 文件中读取,然后在相同的代码中使用 gtk 在标签或其他内容中显示它吗?如果是,怎么办? 谢谢!
有没有人设法得到Bck2Brwsr最近与 Java 8/JavaFX 8 一起工作?有没有兼容的机会?我找不到太多关于它的信息,也没有一个好的起点。使用给定的 Maven archetype我遇到了几
在我的应用程序中,用户通过 openid(与 stackoverflow 相同)登录/注销。 我想通过 oauth 向第三方应用程序开放我的应用程序。 如何创建我的 openid-consumer 应
我在启动和运行 Hibernate 和 Spring 时遇到一些问题。我有一个网络服务器项目,它使用了其他几个具有持久实体的项目。我遇到的问题是,对于存储在 WEB-INF/libs 内的另一个 ja
我有 @ControllerAdvice 类,它处理一组异常。我们还有一些其他异常,这些异常用 @ResponseStatus 注释进行注释。为了结合这两种方法,我们使用博客文章中描述的技术:http
我想在屏幕上使用进度条而不是 progressDialog。 我在我的 XML View 文件中插入了一个进度条,我想让它在加载时显示并在不加载时禁用它。 所以我使用的是可见的,但它发生了,所以其余的
CREATE TABLE `users` ( `id` int(11) AUTO_INCREMENT, `academicdegree` varchar(255),
IN() 中使用的查询返回:1, 2。然而,整个查询返回 0 行,这是不可能的,因为它们存在。我在这里做错了什么? SELECT DISTINCT li.auto_id FROM links
亲们, 我如何在使用 Jade 生成的表单上实现 jQuery 样式?我想做的是美化 表单并使它们可点击。我在 UI 方面很糟糕。期间。 我如何在表单上实现这个可选择的方法? http://jquer
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我可以: auto o1 = new Content; 但不能: std::shared_ptr o1(new Content); std::unique_ptr o1(new Content); 我
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 4 年前。 Improve this qu
我是一名优秀的程序员,十分优秀!