chemical_equation_balancer/main.py

73 lines
2.7 KiB
Python
Raw Permalink Normal View History

2022-12-10 16:30:23 +08:00
# 这是一个示例 Python 脚本。
# 按 ⌃R 执行或将其替换为您的代码。
# 按 双击 ⇧ 在所有地方搜索类、文件、工具窗口、操作和设置。
import parser
2022-12-10 21:38:17 +08:00
import equation_solver
import tkinter
from tkinter import messagebox
from ttkbootstrap import Style
from validity_check import IllegalAtomException
2022-12-10 16:30:23 +08:00
# 按间距中的绿色按钮以运行脚本。
if __name__ == '__main__':
# 新建样式
style = Style('flatly')
# 创建窗口
window = style.master
window.title('化学方程式自动配平器')
window.geometry('500x140')
# 创建输入框
input_label = tkinter.Label(window, text='输入方程式:')
input_label.place(x=10, y=10)
input_entry = tkinter.Entry(window)
input_entry.place(x=100, y=10, width=300, height=30)
# 创建输出框
output_label = tkinter.Label(window, text='输出方程式:')
output_label.place(x=10, y=50)
output_entry = tkinter.Entry(window)
output_entry.place(x=100, y=50, width=300, height=30)
# 创建按钮
button = tkinter.Button(window, text='配平')
button.place(x=420, y=10, width=60, height=70)
# 创建菜单
menu = tkinter.Menu(window)
menu.add_command(label='关于',
command=lambda: messagebox.showinfo('关于', '化学方程式自动配平器\n作者lucas8485\n版本1.0'))
menu.add_command(label='帮助', command=lambda: messagebox.showinfo('帮助', '''输入方程式,点击配平按钮,即可得到配平后的方程式。
注意方程式中的元素必须是化学元素的符号
不能是化学元素的全称且大小写敏感
如果有分隔符请不要输入分隔符'''))
window.config(menu=menu)
# 事件绑定
def balance():
eq = input_entry.get()
try:
parsed_eq = parser.parse_equation(eq)
output_entry.delete(0, 'end')
except IllegalAtomException:
# 弹出错误提示
tkinter.messagebox.showerror('错误', '输入的方程式有误!')
return
except ValueError:
# 弹出错误提示
tkinter.messagebox.showerror('错误', '输入的方程式有误!')
return
2022-12-10 21:38:17 +08:00
try:
balanced_eq = equation_solver.solve_equation(parsed_eq)
except ValueError:
tkinter.messagebox.showerror('错误', '输入的方程式无法配平!')
return
output_entry.delete(0, tkinter.END)
output_entry.insert(0, parser.format_equation(balanced_eq))
button.bind('<Button-1>', lambda event: balance())
# 进入消息循环
window.mainloop()
2022-12-10 16:30:23 +08:00
# 访问 https://www.jetbrains.com/help/pycharm/ 获取 PyCharm 帮助