Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从.py文件Python 3.6创建.exe文件以创建PDF独立文件_Python_Python 3.x_Tkinter_Cx Freeze_Reportlab - Fatal编程技术网

从.py文件Python 3.6创建.exe文件以创建PDF独立文件

从.py文件Python 3.6创建.exe文件以创建PDF独立文件,python,python-3.x,tkinter,cx-freeze,reportlab,Python,Python 3.x,Tkinter,Cx Freeze,Reportlab,我有一个非常简单的.py程序,它使用tkinter构建的GUI提示用户输入两个数字,然后使用“from reportlab.pdfgen import canvas”将答案打印在PDF中。这是下面的代码 from tkinter import * def add_numbers(): num1 = (e1.get()) num2 = (e2.get()) print(float(num1) + float(num2)) master = Tk() # Modify

我有一个非常简单的.py程序,它使用tkinter构建的GUI提示用户输入两个数字,然后使用“from reportlab.pdfgen import canvas”将答案打印在PDF中。这是下面的代码

from tkinter import *

def add_numbers():
    num1 = (e1.get())
    num2 = (e2.get())
    print(float(num1) + float(num2))

master = Tk()

# Modify the window
master.title("Add two numbers")
master.geometry("800x500")

Label(master, text = "Input parameters below:").grid(row=0, column=0, sticky=W)
Label(master, text="a = ").grid(row=2, column=0, sticky=E)
Label(master, text = "mm").grid(row=2, column=2, sticky=W)
Label(master, text="b = ").grid(row=3, column=0, sticky=E)
Label(master, text = "mm").grid(row=3, column=2, sticky=W)
Label(master, text = "Press 'Input' & then 'Calculate'").grid(row=5, column=0)

e1 = Entry(master)
e2 = Entry(master)

e1.grid(row=2, column=1)
e2.grid(row=3, column=1)

Button(master, text='Input', command=add_numbers).grid(row=7, column=0, sticky=W, pady=4)
Button(master, text='Calculate', command=master.quit).grid(row=8, column=0, sticky=W, pady=4)


mainloop()

c2 = e1.get()
d2 = e2.get()

print(float(c2) * float(d2))

a1 = float(c2) * float(d2)


from reportlab.pdfgen import canvas

c = canvas.Canvas("test1.pdf")
c.drawString(100,750, "a = " + c2)
c.drawString(100,730, "b = " + d2)
c.drawString(100,710, "area = " + str(a1) + "mm2")
c.save()
是否可以创建一个独立的.exe程序,用户可以从tkinter GUI中的输入生成PDF,而不必在系统上安装Python?我当前正在对setup.py文件使用以下代码:

import sys
from cx_Freeze import setup, Executable

import os
os.environ['TCL_LIBRARY'] = "C:\\Users\\bra\\AppData\\Local\\Programs\\Python\\Python36-32\\tcl\\tcl8.6"
os.environ['TK_LIBRARY'] = "C:\\Users\\bra\\AppData\\Local\\Programs\\Python\\Python36-32\\tcl\\tcl8.6"

# Dependencies are automatically detected, but it might need fine tuning.
build_exe_options = {"packages": ["os","reportlab.pdfgen","tkinter"]}

base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(  name = "my_first_prog.py",
        version = "0.1",
        description = "My GUI application!",
        options = {"build_exe": build_exe_options},
        executables = [Executable("my_first_prog.py", base=base)])
当我这样做时,我可以创建一个“build”目录,我可以找到一个“application”类型的文件,它被称为my_first_prog。我假设这是.exe文件?当我点击它时,我在底部看到以下内容:“import _tkinter#如果失败,您的Python可能无法为Tk配置”和“ImportError:DLL加载失败:找不到指定的模块”


这里有什么我错过的简单的东西吗?任何帮助都将不胜感激

可能将
tkinter
放在
includes
中,而不是建议的
packages
?我假设您已经在整个系统中安装了tkinter,而不仅仅是在您一直工作的某个虚拟环境中?我只是在命令窗口中使用了“pip install…”。这是否意味着它没有安装在整个系统中?如果没有,我需要下载一些东西吗?(为我的无知道歉,我完全是个新手)。可能将
tkinter
放在
includes
中,而不是建议的
packages
中?我假设您已经在整个系统中安装了tkinter,而不仅仅是在您一直工作的某个虚拟环境中?我只是在命令窗口中使用了“pip install…”。这是否意味着它没有安装在整个系统中?如果没有,我需要下载一些东西吗?(为我的无知道歉,我完全是个新手)。