You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PySimpleGUI实现按钮点击修改文本?计算器开发遇阻

PySimpleGUI计算器按钮功能失效问题解决方法

问题根源

你的代码有几个核心问题导致按钮点击后无反应:

  1. 编写的pressed_button_0()这类函数仅在内部定义局部变量,既没修改全局的problem,也没更新界面显示
  2. 显示计算内容的sg.Text元素未设置唯一key,初始化后无法通过代码更新内容
  3. 仅处理了'0'按钮的点击事件,其余数字和运算符按钮未做事件绑定

修正后的完整代码

import PySimpleGUI as sg

# 初始化计算字符串
problem = ''

# 布局中给显示文本设置key,方便后续更新
layout_1 = [
    [sg.Text('Calculator')],
    # 添加key="-DISPLAY-",后续通过这个key定位元素
    [sg.Text(str(problem), key="-DISPLAY-", size=(20,1), justification='right')],
    [sg.Button('1'), sg.Button('2'), sg.Button('3'), sg.Button('÷')],
    [sg.Button('4'), sg.Button('5'), sg.Button('6'), sg.Button('×')],
    [sg.Button('7'), sg.Button('8'), sg.Button('9'), sg.Button('+')],
    [sg.Button('.'), sg.Button('0'), sg.Button('='), sg.Button('-')]
]

sg.theme('dark grey 13')
window = sg.Window('Calculator', layout_1)

while True:
    event, values = window.read()
    if event == sg.WINDOW_CLOSED:
        break
    
    # 统一处理数字和运算符按钮
    if event in ['0','1','2','3','4','5','6','7','8','9','.','+','-','×','÷']:
        problem += event
        # 刷新显示文本内容
        window["-DISPLAY-"].update(problem)
    
    # 处理等于按钮,基础计算逻辑示例
    elif event == '=':
        try:
            # 替换特殊运算符为Python支持的符号
            calc_expr = problem.replace('×', '*').replace('÷', '/')
            result = eval(calc_expr)
            window["-DISPLAY-"].update(result)
            problem = str(result)  # 将结果作为下一次计算的起始值
        except:
            window["-DISPLAY-"].update("Error")
            problem = ''

window.close()

关键改动说明

  • 给显示文本元素添加key="-DISPLAY-",这是PySimpleGUI中更新元素内容的核心方式
  • 删除冗余的单个数字函数,直接在事件判断中把点击的按钮文本拼接到problem变量
  • 使用window["-DISPLAY-"].update(problem)强制刷新显示内容
  • 统一处理所有数字和运算符的点击事件,代码更简洁
  • 新增等于按钮的基础计算逻辑并包含错误处理

内容的提问来源于stack exchange,提问作者Joshua

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 19:05:22