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

如何在Tkinter中添加结果显示组件?——双文件Python项目

问题解决:将计算结果显示在Tkinter GUI界面中

问题说明

我有一个包含两个文件的Python项目:一个用于创建GUI界面,另一个负责计算GUI输入框中输入的数值(示例为计算a与b的和)。目前计算结果仅能在终端打印,我希望结果以“a + b的和为:[数值]”的形式显示在GUI界面上。

修改后的代码

GUI_file.py

from tkinter import *
from tkinter import messagebox  # 补充导入messagebox,避免报错
import os
from main import *

firstWindowResults = []

clear = lambda: os.system('cls')

firstWindow = Tk()

w = 300
p = 300

ws = firstWindow.winfo_screenwidth()  # 获取屏幕宽度
hs = firstWindow.winfo_screenheight()  # 获取屏幕高度
x = (ws/2) - (w/2)
y = (hs/2) - (p/2)

firstWindowTitle = Label(firstWindow, text="计算a + b")
firstWindowTitle.grid(column=1, row=0, padx=10, pady=10)

firstInput = Label(firstWindow, text="输入a的值")
firstInput.grid(column=0, row=3, padx=10, pady=10)

secondInput = Label(firstWindow, text="输入b的值")
secondInput.grid(column=0, row=4, padx=10, pady=10)

firstEntry = Entry(firstWindow)
firstEntry.grid(column=2, row=3, padx=10, pady=10)

secondEntry = Entry(firstWindow)
secondEntry.grid(column=2, row=4, padx=10, pady=10)

# 添加结果显示标签,初始为空
result_label = Label(firstWindow, text="", font=("Arial", 10))
result_label.grid(column=1, row=7, padx=10, pady=10)

firstWindowValues = [firstEntry, secondEntry]

def validateFirstWindowValues():
    clear()
    firstWindowResults.clear()
    invalid = 0
    try:
        # 先尝试获取并转换数值,避免多次判断
        a_val = float(firstEntry.get())
        b_val = float(secondEntry.get())
        
        if a_val <= 0:
            messagebox.showerror("无效值", "请检查第1行输入!")
            invalid += 1
        elif b_val <= 0:
            messagebox.showerror("无效值", "请检查第2行输入!")
            invalid += 1
        else:
            firstWindowResults.append(a_val)
            firstWindowResults.append(b_val)
    except ValueError:
        messagebox.showerror("输入错误", "请输入有效的数字!")
        invalid += 1
    
    if invalid == 0:
        # 调用计算函数并获取结果
        sum_result = dims(firstWindowResults[0], firstWindowResults[1])
        # 更新结果标签的文本
        result_label.config(text=f"{firstWindowResults[0]} + {firstWindowResults[1]}的和为:{sum_result}")

nextButton = Button(firstWindow, text="计算", command=validateFirstWindowValues)
nextButton.grid(column=1, row=9, padx=10, pady=10)

firstWindow.geometry('%dx%d+%d+%d' % (w, p, x, y))
firstWindow.mainloop()

main_file.py

def dims(firstEntry, secondEntry):
    va = float(firstEntry)
    vb = float(secondEntry)
    c = va + vb
    # 返回计算结果,而不是打印到终端
    return c

关键修改点

  • main文件:将dims函数的print(c)改为return c,让函数返回计算结果供GUI调用。
  • GUI文件:
    1. 补充导入messagebox,解决原代码中未导入但使用的问题。
    2. 添加一个Label组件result_label,用于显示计算结果。
    3. 修改validateFirstWindowValues函数:增加异常处理(处理非数字输入),调用dims后获取结果,再通过config方法更新result_label的文本内容,实现结果在GUI上显示。
    4. 优化了数值验证逻辑,减少冗余判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:22:54