我是一个初学者,使用tkinter制作了我的第一个GUI计算器。我想将py文件转换为exe文件。我尝试使用pyinstaller
,auto-py-to-exe
,但是当文件准备好并运行时,它显示Windows错误框Cannot run Script main
,我的文件名为main。
import getpass
from os import mkdir
import tkinter,os,time
from functools import partial
from tkinter import PhotoImage
from tkinter.constants import SEL
class Calculator(tkinter.Tk):
'''This class creates calculator using tkinter module'''
def __init__(self):
super().__init__()
# Changing height and width of window
self.geometry('279x316')
self.resizable(False,False)
self.title('Calculator')
image=PhotoImage('download.ico')
self.iconbitmap(image)
# Creating tkinter varible to store what user has entered
self.__store_value=tkinter.StringVar()
self.__store_value.set('')
#Creating entry widget for input
self.__input_user=tkinter.Entry(self,font='lucidia 20 bold',textvariable=self.__store_value)
self.__input_user.pack(fill='x')
self.bind('<Return>',partial(self.click,'='))
# This Buttons will be ther in calculator
self._button_dict={"C":"C","(":"(",")":")","/":"/","9":9,"8":8,"7":7,"*":"*","6":6,"5":5,"4":4,"+":"+","3":3,"2":2,"1":1,"-":"-","His":"His","0":0,".":".","=":"="}
def create_button(self,row=5,column=4):
'''Creates button in the window,button_dict contains name of each button and an argument to be given to click function when pressed,no of rows in calculator and no. of columns'''
self.__main_frame=tkinter.Frame(self)
self.__main_frame.pack(fill='both')
k=0
for i in range(row):
for r in range(column):
try:
button=tkinter.Button(self.__main_frame,text=list(self._button_dict.keys())[k],command=partial(self.click,self._button_dict[list(self._button_dict.keys())[k]]),font='lucidia 20 bold')
button.grid(row=i,column=r,ipadx=15)
self._button_dict[list(self._button_dict.keys())[k]]=button
k+=1
except Exception as e:
k+=1
# configuring each button
self._button_dict['His'].grid(ipadx=1)
self._button_dict['C'].grid(ipadx=13)
self._button_dict['('].grid(ipadx=18)
self._button_dict[')'].grid(ipadx=18)
self._button_dict['.'].grid(ipadx=18)
self._button_dict['+'].grid(ipadx=11)
self._button_dict['='].grid(ipadx=12)
self._button_dict[r'*'].grid(ipadx=14)
def click(self,arg,*event):
if arg=='C':
'''If click on C clears the text area'''
self.__store_value.set('')
self.update()
elif arg=='His':
if os.path.exists(f"C:\\Users\\{getpass.getuser()}\\Calculator\\Log.txt"):
self.__his=tkinter.Tk()
self.__his.title('History')
im=PhotoImage('History.ico')
self.__his.iconbitmap(im)
with open(f"C:\\Users\\{getpass.getuser()}\\Calculator\\Log.txt") as f:
for i in f.read().split('\n'):
if i=='':
pass
else:
tkinter.Label(self.__his,text=i,relief='solid').pack()
else:
self.__store_value.set("Error")
self.update()
elif arg=='=':
if self.__store_value.get()=='':
pass
else:
try:
l=self.__store_value.get()
self.__store_value.set(eval(self.__store_value.get()))
if os.path.exists(f"C:\\Users\\{getpass.getuser()}\\Calculator\\Log.txt"):
with open(f'C:\\Users\\{getpass.getuser()}\\Calculator\\Log.txt',"a") as f:
f.write(f"{l}={eval(l)}\n")
else:
try:
os.mkdir(f'C:\\Users\\{getpass.getuser()}\\Calculator')
except Exception as e:
pass
with open(f'C:\\Users\\{getpass.getuser()}\\Calculator\\Log.txt',"a") as f:
f.write(f"{l}={eval(l)}\n")
except Exception as e:
self.__store_value.set('Error')
self.update()
else:
if self.__store_value.get()=='Error':
self.__store_value.set(arg)
self.update()
else:
self.__store_value.set(f'{self.__store_value.get()}{arg}')
self.update()
def on_closing(self):
try:
os.remove(f'C:\\Users\\{getpass.getuser()}\\Calculator\\Log.txt')
except Exception as e:
pass
self.destroy()
if __name__ == "__main__":
app=Calculator()
app.create_button()
app.protocol("WM_DELETE_WINDOW",app.on_closing)
app.mainloop()
上传ico图片时出现错误,因此您可以在https://github.com/01TanmayDaga/Calculator上找到图片
请帮助我!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。