[英]Unable to open my exe file once i converted
i converted my gui into.exe and i try to open the.exe file, it automatically close once i open it.我将我的 gui 转换为 .exe 并尝试打开 .exe 文件,一旦我打开它它会自动关闭。 what am i missing out to create a complete software, am i missing out os or sys or something that i need to include in. i check my codes and it work fine.
我错过了什么来创建一个完整的软件,我错过了操作系统或系统或我需要包含的东西。我检查了我的代码并且它工作正常。 this is my first time learning how to create a simple software.
这是我第一次学习如何创建一个简单的软件。
import tkinter as tk
from tkinter import ttk
import math as mt
class truepositioncal(tk.Frame):
def __init__(self,master=None):
super().__init__(master=master)
# Create Frame
self.maxtrueposition_frame = tk.Frame(self)
self.nom_x_frame = tk.Frame(self)
self.nom_y_frame = tk.Frame(self)
self.act_x_frame = tk.Frame(self)
self.act_y_frame = tk.Frame(self)
self.nom_dia_frame = tk.Frame(self)
self.tol_pos_frame = tk.Frame(self)
self.tol_neg_frame = tk.Frame(self)
self.act_dia_frame = tk.Frame(self)
self.result_frame = tk.Frame(self)
self.calculate_frame = tk.Frame(self)
self.mmc_frame = tk.Frame(self)
self.lmc_frame = tk.Frame(self)
# prompt label Max True position
self.promptlabelmaxpos = tk.Label(self.maxtrueposition_frame, text='Max Position Deviation:')
# Input Max True Position
self.maxposdev = tk.Entry(self.maxtrueposition_frame, width=10)
self.promptlabelmaxpos.pack(side='left')
self.maxposdev.pack(side='left')
# Prompt label nominal X
self.labeldrawingpara_x = tk.Label(self.nom_x_frame, text='Nominal X Value:')
self.nominal_x = tk.Entry(self.nom_x_frame, width=10)
# pack to left (nominal X)
self.labeldrawingpara_x.pack(side='left')
self.nominal_x.pack(side='left')
# Prompt label nominal y
self.labeldrawingpara_y = tk.Label(self.nom_y_frame, text='Nominal Y Value:')
self.nominal_y = tk.Entry(self.nom_y_frame, width=10)
self.labeldrawingpara_y.pack(side='left')
self.nominal_y.pack(side='left')
# Prompt label actual X
self.labelact_x = tk.Label(self.act_x_frame, text='Actual X Value:')
self.act_x = tk.Entry(self.act_x_frame, width=10)
self.labelact_x.pack(side='left')
self.act_x.pack(side='left')
# Prompt label Actual Y
self.labelact_y = tk.Label(self.act_y_frame, text='Actual Y Value:')
self.act_y = tk.Entry(self.act_y_frame, width=10)
self.labelact_y.pack(side='left')
self.act_y.pack(side='left')
# Prompt label Nominal Diameter
self.labelnomdia = tk.Label(self.nom_dia_frame, text='Nominal Diameter Value:')
self.nom_dia = tk.Entry(self.nom_dia_frame, width=10)
self.labelnomdia.pack(side='left')
self.nom_dia.pack(side='left')
# Prompt label tolerance positive
self.labeltolpos = tk.Label(self.tol_pos_frame, text='Tolerance (+) Value:')
self.tol_pos = tk.Entry(self.tol_pos_frame, width=10)
self.labeltolpos.pack(side='left')
self.tol_pos.pack(side='left')
# Prompt label tolerance Negative
self.labeltolneg = tk.Label(self.tol_neg_frame, text='Tolerance (-) Value:')
self.tol_neg = tk.Entry(self.tol_neg_frame, width=10)
self.labeltolneg.pack(side='left')
self.tol_neg.pack(side='left')
# Prompt Label for Actual Diameter
self.labelactdia = tk.Label(self.act_dia_frame, text='Actual Diameter:')
self.act_dia = tk.Entry(self.act_dia_frame, width=10)
self.labelactdia.pack(side='left')
self.act_dia.pack(side='left')
# Create and pack the widgets for the true position results
self.result_label = tk.Label(self.result_frame, text='Actual Position Result:')
self.rs = tk.StringVar()
self.rs_label = tk.Label(self.result_frame,
textvariable=self.rs)
self.result_label.pack(side='left')
self.rs_label.pack(side='left')
self.calc_button = tk.Button(self.calculate_frame, text='Calculate',
command=self.caltruepos)
self.calc_button.pack(side='left')
# create widgets for MMC results
self.mmc_result_label = tk.Label(self.mmc_frame, text='Position Tolerances allowed (MMC):')
self.mmc = tk.StringVar()
self.mmc_label = tk.Label(self.mmc_frame, textvariable=self.mmc)
self.mmc_result_label.pack(side='left')
self.mmc_label.pack(side='left')
# create widgets for lmc results
self.lmc_result_label = tk.Label(self.lmc_frame, text='Position Tolerances allowed (LMC):')
self.lmc = tk.StringVar()
self.lmc_label = tk.Label(self.lmc_frame, textvariable=self.lmc)
self.lmc_result_label.pack(side='left')
self.lmc_label.pack(side='left')
# Pack into one
self.maxtrueposition_frame.pack()
self.nom_x_frame.pack()
self.nom_y_frame.pack()
self.act_x_frame.pack()
self.act_y_frame.pack()
self.nom_dia_frame.pack()
self.tol_pos_frame.pack()
self.tol_neg_frame.pack()
self.act_dia_frame.pack()
self.result_frame.pack()
self.mmc_frame.pack()
self.lmc_frame.pack()
self.calculate_frame.pack()
def caltruepos(self):
#Change string into float numbers
maxtrueposition = float(self.maxposdev.get())
nom_x_a = float(self.nominal_x.get())
nom_y_a = float(self.nominal_y.get())
act_x_a = float(self.act_x.get())
act_y_a = float(self.act_y.get())
nom_dia_a = float(self.nom_dia.get())
tol_pos_a = float(self.tol_pos.get())
tol_neg_a = float(self.tol_neg.get())
act_dia_a = float(self.act_dia.get())
#calculate true position
x = nom_x_a - act_x_a
y = nom_y_a - act_y_a
square_Root = mt.sqrt((x*x) + (y*y))
Value = 2 * square_Root
#calculate true position mmc
a_mmc = abs(act_dia_a - (nom_dia_a - tol_neg_a)) + maxtrueposition
#calculate true position lmc
a_lmc = abs((nom_dia_a + tol_pos_a) - act_dia_a) + maxtrueposition
#showing pass or fail
if Value <= maxtrueposition:
self.rs_label["background"] = "green"
else:
self.rs_label["background"] = "red"
if Value <= a_mmc:
self.mmc_label["background"] = "green"
else:
self.mmc_label["background"] = "red"
if Value <= a_lmc:
self.lmc_label["background"] = "green"
else:
self.lmc_label["background"] = "red"
#roundup to 3 decimal places
true_position_result = '{:.4f}'.format(Value)
mmc_result = '{:.4f}'.format(a_mmc)
lmc_result = '{:.4f}'.format(a_lmc)
#float to StringVar
self.rs.set(true_position_result)
self.mmc.set(mmc_result)
self.lmc.set(lmc_result)
main_window = tk.Tk()
# Main Window Title
main_window.title('True Position Calculator')
# main window size
main_window.geometry('400x300')
# tab notebook
tab_control = ttk.Notebook(main_window)
tab_control.pack(fill=tk.BOTH, expand=True)
# tabs widgets
trueposcal_a = truepositioncal(tab_control)
tab_control.add(trueposcal_a,text='Shaft (OD)')
class truepositioncal1(tk.Frame):
def __init__(self,master=None):
super().__init__(master=master)
# Create Frame
self.maxtrueposition_b_frame = tk.Frame(self)
self.nom_x_b_frame = tk.Frame(self)
self.nom_y_b_frame = tk.Frame(self)
self.act_x_b_frame = tk.Frame(self)
self.act_y_b_frame = tk.Frame(self)
self.nom_dia_b_frame = tk.Frame(self)
self.tol_pos_b_frame = tk.Frame(self)
self.tol_neg_b_frame = tk.Frame(self)
self.act_dia_b_frame = tk.Frame(self)
self.result_b_frame = tk.Frame(self)
self.calculate_b_frame = tk.Frame(self)
self.mmc_b_frame = tk.Frame(self)
self.lmc_b_frame = tk.Frame(self)
# prompt label Max True position
self.promptlabelmaxpos_b = tk.Label(self.maxtrueposition_b_frame, text='Max Position Deviation:')
# Input Max True Position
self.maxposdev_b = tk.Entry(self.maxtrueposition_b_frame, width=10)
self.promptlabelmaxpos_b.pack(side='left')
self.maxposdev_b.pack(side='left')
# Prompt label nominal X
self.labeldrawingpara_x_b = tk.Label(self.nom_x_b_frame, text='Nominal X Value:')
self.nominal_x_b = tk.Entry(self.nom_x_b_frame, width=10)
#pack to left (nominal X)
self.labeldrawingpara_x_b.pack(side='left')
self.nominal_x_b.pack(side='left')
# Prompt label actual X
self.labelact_x_b = tk.Label(self.act_x_b_frame, text='Actual X Value:')
self.act_x_b = tk.Entry(self.act_x_b_frame, width=10)
self.labelact_x_b.pack(side='left')
self.act_x_b.pack(side='left')
# Prompt label nominal y
self.labeldrawingpara_y_b = tk.Label(self.nom_y_b_frame, text='Nominal Y Value:')
self.nominal_y_b = tk.Entry(self.nom_y_b_frame, width=10)
self.labeldrawingpara_y_b.pack(side='left')
self.nominal_y_b.pack(side='left')
# Prompt label Actual Y
self.labelact_y_b = tk.Label(self.act_y_b_frame, text='Actual Y Value:')
self.act_y_b = tk.Entry(self.act_y_b_frame, width=10)
self.labelact_y_b.pack(side='left')
self.act_y_b.pack(side='left')
# Prompt label Nominal Diameter
self.labelnomdia_b = tk.Label(self.nom_dia_b_frame, text='Nominal Diameter Value:')
self.nom_dia_b = tk.Entry(self.nom_dia_b_frame, width=10)
self.labelnomdia_b.pack(side='left')
self.nom_dia_b.pack(side='left')
# Prompt label tolerance positive
self.labeltolpos_b = tk.Label(self.tol_pos_b_frame, text='Tolerance (+) Value:')
self.tol_pos_b = tk.Entry(self.tol_pos_b_frame, width=10)
self.labeltolpos_b.pack(side='left')
self.tol_pos_b.pack(side='left')
# Prompt label tolerance Negative
self.labeltolneg_b = tk.Label(self.tol_neg_b_frame, text='Tolerance (-) Value:')
self.tol_neg_b = tk.Entry(self.tol_neg_b_frame, width=10)
# move entry and label to left
self.labeltolneg_b.pack(side='left')
self.tol_neg_b.pack(side='left')
# Prompt Label for Actual Diameter
self.labelactdia_b = tk.Label(self.act_dia_b_frame, text='Actual Diameter:')
self.act_dia_b = tk.Entry(self.act_dia_b_frame, width=10)
self.labelactdia_b.pack(side='left')
self.act_dia_b.pack(side='left')
# Create and pack the widgets for the true position results
self.result_label_b = tk.Label(self.result_b_frame, text='Actual Position Result:')
#converting float to string variable
self.rs_b = tk.StringVar()
self.rs_label_b = tk.Label(self.result_b_frame,
textvariable=self.rs_b)
self.result_label_b.pack(side='left')
self.rs_label_b.pack(side='left')
self.calc_button_b = tk.Button(self.calculate_b_frame, text='Calculate',
command=self.caltrueposb)
self.calc_button_b.pack(side='left')
# create widgets for MMC results
self.mmc_result_label_b = tk.Label(self.mmc_b_frame, text='Position Tolerances allowed (MMC):')
#converting float to str variable
self.mmc_b = tk.StringVar()
self.mmc_label_b = tk.Label(self.mmc_b_frame, textvariable=self.mmc_b)
self.mmc_result_label_b.pack(side='left')
self.mmc_label_b.pack(side='left')
# create widgets for lmc results
self.lmc_result_label_b = tk.Label(self.lmc_b_frame, text='Position Tolerances allowed (LMC):')
self.lmc_b = tk.StringVar()
self.lmc_label_b = tk.Label(self.lmc_b_frame, textvariable=self.lmc_b)
self.lmc_result_label_b.pack(side='left')
self.lmc_label_b.pack(side='left')
# Pack into one
self.maxtrueposition_b_frame.pack()
self.nom_x_b_frame.pack()
self.nom_y_b_frame.pack()
self.act_x_b_frame.pack()
self.act_y_b_frame.pack()
self.nom_dia_b_frame.pack()
self.tol_pos_b_frame.pack()
self.tol_neg_b_frame.pack()
self.act_dia_b_frame.pack()
self.result_b_frame.pack()
self.mmc_b_frame.pack()
self.lmc_b_frame.pack()
self.calculate_b_frame.pack()
def caltrueposb(self):
#Change string into float numbers
maxtrueposition_bb = float(self.maxposdev_b.get())
nom_x_bb = float(self.nominal_x_b.get())
nom_y_bb = float(self.nominal_y_b.get())
act_x_bb = float(self.act_x_b.get())
act_y_bb = float(self.act_y_b.get())
nom_dia_bb = float(self.nom_dia_b.get())
tol_pos_bb = float(self.tol_pos_b.get())
tol_neg_bb = float(self.tol_neg_b.get())
act_dia_bb = float(self.act_dia_b.get())
#calculate true position
x = nom_x_bb - act_x_bb
y = nom_y_bb - act_y_bb
square_Root_b = mt.sqrt((x*x) + (y*y))
Value_b = 2 * square_Root_b
#calculate true position mmc
bb_mmc = abs(act_dia_bb - (nom_dia_bb + tol_pos_bb)) + maxtrueposition_bb
#calculate true position lmc
bb_lmc = abs((nom_dia_bb - tol_neg_bb) - act_dia_bb) + maxtrueposition_bb
#showing pass or fail
if Value_b <= maxtrueposition_bb:
self.rs_label_b["background"] = "green"
else:
self.rs_label_b["background"] = "red"
if Value_b <= bb_mmc:
self.mmc_label_b["background"] = "green"
else:
self.mmc_label_b["background"] = "red"
if Value_b <= bb_lmc:
self.lmc_label_b["background"] = "green"
else:
self.lmc_label_b["background"] = "red"
#roundup to 3 decimal places
true_position_result_b = '{:.4f}'.format(Value_b)
mmc_result_b = '{:.4f}'.format(bb_mmc)
lmc_result_b = '{:.4f}'.format(bb_lmc)
#float to StringVar
self.rs_b.set(true_position_result_b)
self.mmc_b.set(mmc_result_b)
self.lmc_b.set(lmc_result_b)
trueposcal_b = truepositioncal1(tab_control)
tab_control.add(trueposcal_b,text='Bore (ID)')
tk.mainloop()
shorter version of it它的较短版本
import tkinter as tk
from tkinter import ttk
import math as mt
class truepositioncal(tk.Frame):
def __init__(self,master=None):
super().__init__(master=master)
# Create Frame
self.maxtrueposition_frame = tk.Frame(self)
self.nom_x_frame = tk.Frame(self)
self.nom_y_frame = tk.Frame(self)
self.act_x_frame = tk.Frame(self)
self.act_y_frame = tk.Frame(self)
self.nom_dia_frame = tk.Frame(self)
self.tol_pos_frame = tk.Frame(self)
self.tol_neg_frame = tk.Frame(self)
self.act_dia_frame = tk.Frame(self)
self.result_frame = tk.Frame(self)
self.calculate_frame = tk.Frame(self)
self.mmc_frame = tk.Frame(self)
self.lmc_frame = tk.Frame(self)
# prompt label Max True position
self.promptlabelmaxpos = tk.Label(self.maxtrueposition_frame, text='Max Position Deviation:')
# Input Max True Position
self.maxposdev = tk.Entry(self.maxtrueposition_frame, width=10)
self.promptlabelmaxpos.pack(side='left')
self.maxposdev.pack(side='left')
# Prompt label nominal X
self.labeldrawingpara_x = tk.Label(self.nom_x_frame, text='Nominal X Value:')
self.nominal_x = tk.Entry(self.nom_x_frame, width=10)
# pack to left (nominal X)
self.labeldrawingpara_x.pack(side='left')
self.nominal_x.pack(side='left')
# Prompt label nominal y
self.labeldrawingpara_y = tk.Label(self.nom_y_frame, text='Nominal Y Value:')
self.nominal_y = tk.Entry(self.nom_y_frame, width=10)
self.labeldrawingpara_y.pack(side='left')
self.nominal_y.pack(side='left')
# Prompt label actual X
self.labelact_x = tk.Label(self.act_x_frame, text='Actual X Value:')
self.act_x = tk.Entry(self.act_x_frame, width=10)
self.labelact_x.pack(side='left')
self.act_x.pack(side='left')
# Prompt label Actual Y
self.labelact_y = tk.Label(self.act_y_frame, text='Actual Y Value:')
self.act_y = tk.Entry(self.act_y_frame, width=10)
self.labelact_y.pack(side='left')
self.act_y.pack(side='left')
# Prompt label Nominal Diameter
self.labelnomdia = tk.Label(self.nom_dia_frame, text='Nominal Diameter Value:')
self.nom_dia = tk.Entry(self.nom_dia_frame, width=10)
self.labelnomdia.pack(side='left')
self.nom_dia.pack(side='left')
# Prompt label tolerance positive
self.labeltolpos = tk.Label(self.tol_pos_frame, text='Tolerance (+) Value:')
self.tol_pos = tk.Entry(self.tol_pos_frame, width=10)
self.labeltolpos.pack(side='left')
self.tol_pos.pack(side='left')
# Prompt label tolerance Negative
self.labeltolneg = tk.Label(self.tol_neg_frame, text='Tolerance (-) Value:')
self.tol_neg = tk.Entry(self.tol_neg_frame, width=10)
self.labeltolneg.pack(side='left')
self.tol_neg.pack(side='left')
# Prompt Label for Actual Diameter
self.labelactdia = tk.Label(self.act_dia_frame, text='Actual Diameter:')
self.act_dia = tk.Entry(self.act_dia_frame, width=10)
self.labelactdia.pack(side='left')
self.act_dia.pack(side='left')
# Create and pack the widgets for the true position results
self.result_label = tk.Label(self.result_frame, text='Actual Position Result:')
self.rs = tk.StringVar()
self.rs_label = tk.Label(self.result_frame,
textvariable=self.rs)
self.result_label.pack(side='left')
self.rs_label.pack(side='left')
self.calc_button = tk.Button(self.calculate_frame, text='Calculate',
command=self.caltruepos)
self.calc_button.pack(side='left')
# create widgets for MMC results
self.mmc_result_label = tk.Label(self.mmc_frame, text='Position Tolerances allowed (MMC):')
self.mmc = tk.StringVar()
self.mmc_label = tk.Label(self.mmc_frame, textvariable=self.mmc)
self.mmc_result_label.pack(side='left')
self.mmc_label.pack(side='left')
# create widgets for lmc results
self.lmc_result_label = tk.Label(self.lmc_frame, text='Position Tolerances allowed (LMC):')
self.lmc = tk.StringVar()
self.lmc_label = tk.Label(self.lmc_frame, textvariable=self.lmc)
self.lmc_result_label.pack(side='left')
self.lmc_label.pack(side='left')
# Pack into one
self.maxtrueposition_frame.pack()
self.nom_x_frame.pack()
self.nom_y_frame.pack()
self.act_x_frame.pack()
self.act_y_frame.pack()
self.nom_dia_frame.pack()
self.tol_pos_frame.pack()
self.tol_neg_frame.pack()
self.act_dia_frame.pack()
self.result_frame.pack()
self.mmc_frame.pack()
self.lmc_frame.pack()
self.calculate_frame.pack()
def caltruepos(self):
#Change string into float numbers
maxtrueposition = float(self.maxposdev.get())
nom_x_a = float(self.nominal_x.get())
nom_y_a = float(self.nominal_y.get())
act_x_a = float(self.act_x.get())
act_y_a = float(self.act_y.get())
nom_dia_a = float(self.nom_dia.get())
tol_pos_a = float(self.tol_pos.get())
tol_neg_a = float(self.tol_neg.get())
act_dia_a = float(self.act_dia.get())
#calculate true position
x = nom_x_a - act_x_a
y = nom_y_a - act_y_a
square_Root = mt.sqrt((x*x) + (y*y))
Value = 2 * square_Root
#calculate true position mmc
a_mmc = abs(act_dia_a - (nom_dia_a - tol_neg_a)) + maxtrueposition
#calculate true position lmc
a_lmc = abs((nom_dia_a + tol_pos_a) - act_dia_a) + maxtrueposition
#showing pass or fail
if Value <= maxtrueposition:
self.rs_label["background"] = "green"
else:
self.rs_label["background"] = "red"
if Value <= a_mmc:
self.mmc_label["background"] = "green"
else:
self.mmc_label["background"] = "red"
if Value <= a_lmc:
self.lmc_label["background"] = "green"
else:
self.lmc_label["background"] = "red"
#roundup to 3 decimal places
true_position_result = '{:.4f}'.format(Value)
mmc_result = '{:.4f}'.format(a_mmc)
lmc_result = '{:.4f}'.format(a_lmc)
#float to StringVar
self.rs.set(true_position_result)
self.mmc.set(mmc_result)
self.lmc.set(lmc_result)
main_window = tk.Tk()
# Main Window Title
main_window.title('True Position Calculator')
# main window size
main_window.geometry('400x300')
# tab notebook
tab_control = ttk.Notebook(main_window)
tab_control.pack(fill=tk.BOTH, expand=True)
# tabs widgets
trueposcal_a = truepositioncal(tab_control)
tab_control.add(trueposcal_a,text='Shaft (OD)')
tk.mainloop()
There are many options to convert a.py to.exe a.py转.exe的选项有很多
pyinstaller --onefile -w.\your_file.py pyinstaller --onefile -w.\your_file.py
You will get the exe file in the output/ folder您将在output/文件夹中获得 exe 文件
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.