代码如下:
import wx
class CalculatorFrame(wx.Frame):
def __init__(self):
super().__init__(parent=None, title='计算器', size=(300, 400))
self.current_number = ''
self.expression = ''
self.InitUI()
def InitUI(self):
panel = wx.Panel(self)
vbox = wx.BoxSizer(wx.VERTICAL)
# 显示框
self.display = wx.TextCtrl(panel, style=wx.TE_RIGHT | wx.TE_READONLY)
vbox.Add(self.display, 0, wx.EXPAND | wx.ALL, 5)
# 按钮网格
grid = wx.GridSizer(5, 4, 5, 5)
# 按钮标签
buttons = [
'C', '←', '%', '/',
'7', '8', '9', '*',
'4', '5', '6', '-',
'1', '2', '3', '+',
'0', '.', '±', '='
]
# 创建并添加按钮
for label in buttons:
button = wx.Button(panel, label=label)
grid.Add(button, 0, wx.EXPAND)
button.Bind(wx.EVT_BUTTON, self.OnButtonClick)
vbox.Add(grid, 1, wx.EXPAND | wx.ALL, 5)
panel.SetSizer(vbox)
self.Center()
def OnButtonClick(self, event):
button = event.GetEventObject()
label = button.GetLabel()
if label == 'C':
self.current_number = ''
self.expression = ''
elif label == '←':
self.current_number = self.current_number[:-1]
elif label == '±':
if self.current_number and self.current_number != '0':
if self.current_number[0] == '-':
self.current_number = self.current_number[1:]
else:
self.current_number = '-' + self.current_number
elif label == '=':
try:
if self.expression or self.current_number:
full_expression = self.expression + self.current_number
result = str(eval(full_expression))
self.current_number = result
self.expression = ''
except:
self.current_number = 'Error'
self.expression = ''
elif label in ['+', '-', '*', '/', '%']:
if self.current_number:
self.expression += self.current_number + label
self.current_number = ''
else: # 数字和小数点
self.current_number += label
# 更新显示
display_text = self.expression + self.current_number
if not display_text:
display_text = '0'
self.display.SetValue(display_text)
def calculator():
app = wx.App()
frame = CalculatorFrame()
frame.Show()
app.MainLoop()
if __name__ == "__main__":
calculator()
在相同文件夹下新疆一个build.py文件,输入如下代码:
import PyInstaller.__main__
import os
# 设置图标路径(如果没有图标文件,可以删除相关参数)
# icon_path = os.path.join(os.path.dirname(__file__), 'calculator.ico')
# 配置打包参数
params = [
'test.py', # 主程序文件
'--name=Calculator', # 生成的可执行文件名
'--onefile', # 打包成单个可执行文件
'--noconsole', # 运行时不显示控制台窗口
'--clean', # 清理临时文件
# '--icon=' + icon_path, # 设置图标(如果有图标文件,取消注释此行)
]
# 执行打包命令
PyInstaller.__main__.run(params)
在这个文件夹下会生成.exe文件。
双击运行即可。