python - PySimpleGUI 中的计算器
问题描述
我有一个简单的计算器,它有一个固定常数和另一个要添加到常数的条目。我正在努力处理这些条目(变量)为负数,即 -1234,因为我在输入上投射了一个 int(),所以很明显这会在尝试计算总和时导致问题。
import PySimpleGUI as sg
columns = ["FIXED","VARIABLE","RESULT"]
param = (20,3) # size of the main window
def CALCULATOR():
sg.theme('Dark Brown 1')
listing = [sg.Text(u, size = param) for u in columns]
core = [
sg.Input(f"{10}", size = param),
sg.Input(size = param,enable_events=True,key='NUMBER'),
sg.Input(size = param)]
mesh = [[x,y] for (x,y) in list(zip(listing, core))]
window = sg.Window('CALCULATOR', mesh, font='Courier 12').Finalize()
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED:
break
elif event == "SEND":
break
elif event == "NUMBER":
variable = int(values['NUMBER'])
fixed= int(values[0])
for element, value in zip(core[2:], [variable+fixed]):
element.update(value=value)
else:
print("OVER")
window.close()
CALCULATOR()
解决方案
您可以将您的 if 语句包装在一个try-except
语句中,然后在有以下情况时处理更新ValueError
:
while True:
event, values = window.read()
try:
if event == sg.WINDOW_CLOSED:
break
elif event == "SEND":
break
elif event == "NUMBER":
variable = int(values['NUMBER'])
fixed = int(values[0])
core[2].update(variable+fixed)
else:
print("OVER")
except ValueError:
core[2].update("ValueError!")
上面的代码“捕获”了一旦您输入的内容不能很好地转换为整数时触发的 ValueError,然后您可以更新该字段以通知用户为什么结果没有输出。
推荐阅读
- sql - 访问 UNION SQL 查询语法错误信息
- swiftui - 如何使用 AdMob 横幅摆脱消息“'windows' 在 iOS 15.0 中已弃用:在相关窗口场景上使用 UIWindowScene.windows”?
- latex - 引文未显示 - 别名显示在 pdf 中
- python - 这个声音管理器有什么问题?
- android - 是否需要多次创建通知通道?
- r - 在ggplot2上反转/翻转图的位置
- java - 使用 \t 创建一个列列表
- reactjs - MUI 复选框标签中的两个对象文字
- javascript - 将命名空间分配给 src 库文件
- html - 如何在不选择整个块的情况下设置此链接的样式?