tkinter计算器GUI每次计算后结果追加=号问题求助
问题根因
这个bug是事件处理函数的分支逻辑设计错误导致的:
- 你的
click函数现在是三个独立判断分支:先判断点击内容是否为=,再单独判断点击内容是否为C,所有不满足C判断的情况都会触发末尾的字符追加逻辑 - 当你点击
=按钮时,第一个分支会正常计算出结果并写入输入框,接下来第二个if text == 'C'判断不成立,就会触发else分支,把=字符追加到已经计算好的结果末尾,最终就出现了25=的错误输出
修复方案
只需要把第二个独立的if判断改为elif,让三个分支形成互斥的判断关系即可,修改后的完整click函数代码如下:
def click(event): global string text = event.widget.cget('text') if text == '=': if string.get().isdigit(): value = int(string.get()) else: try: value = eval(string.get()) except Exception as e: value = 'Error' string.set(value) screen.update() elif text == 'C': string.set(' ') screen.update() else: string.set(string.get() + text) screen.update()
修改后点击=按钮时,执行完计算分支后会直接跳出条件判断,不会再进入追加字符的逻辑,就能得到正确的计算结果。
内容的提问来源于stack exchange,提问作者Satyam Shankar
相关产品推荐
相关产品推荐

