用tkinter库写计算任意三角形面积2

为了使用表格布局(在Tkinter中通常通过grid方法实现,尽管它并不是严格意义上的HTML表格布局,但可以达到类似的效果)并添加一个“清空”按钮,我们可以对代码进行如下修改。这里,我将结果显示在一个多行的Text控件中(命名为txt3),以便将来可以扩展显示更多信息(尽管在这个例子中我们只显示一行)。同时,添加了一个“清空”按钮来清除所有文本框的内容。

以下是修改后的代码:

import tkinter as tk
from tkinter import messagebox

def calculate_area():
    try:
        a = float(txt1.get())  # 底
        h = float(txt2.get())  # 高
        area = 0.5 * a * h
        txt3.delete(1.0, tk.END)  # 清空Text控件的内容
        txt3.insert(tk.END, f"面积: {area:.2f}\n")  # 插入计算结果
    except ValueError:
        messagebox.showerror("输入错误", "请输入有效的数字")

def clear_fields():
    txt1.delete(0, tk.END)  # 清空底文本框
    txt2.delete(0, tk.END)  # 清空高文本框
    txt3.delete(1.0, tk.END)  # 清空结果Text控件的内容

# 创建主窗口
root = tk.Tk()
root.title("三角形面积计算器")

# 创建并放置标签和输入框
label1 = tk.Label(root, text="底:")
label1.grid(row=0, column=0, padx=10, pady=10, sticky=tk.W)
txt1 = tk.Entry(root)
txt1.grid(row=0, column=1, padx=10, pady=10)

label2 = tk.Label(root, text="高:")
label2.grid(row=1, column=0, padx=10, pady=10, sticky=tk.W)
txt2 = tk.Entry(root)
txt2.grid(row=1, column=1, padx=10, pady=10)

# 创建并放置结果Text控件(虽然这里只用一行,但Text控件更灵活)
txt3 = tk.Text(root, height=5, width=30)  # 设置高度和宽度以适应内容
txt3.grid(row=3, column=0, columnspan=2, pady=10)

# 创建计算按钮
btn_calculate = tk.Button(root, text="计算", command=calculate_area)
btn_calculate.grid(row=2, column=0, columnspan=2, pady=10)

# 创建清空按钮
btn_clear = tk.Button(root, text="清空", command=clear_fields)
btn_clear.grid(row=4, column=0, columnspan=2, pady=10)

# 运行主循环
root.mainloop()

程序说明:

  1. 导入库:与之前的代码相同。
  2. 定义计算面积的函数calculate_area 函数现在会清空text3控件的内容,然后插入计算结果。
  3. 定义清空字段的函数clear_fields 函数用于清空所有文本框和结果Text控件的内容。
  4. 创建主窗口:与之前的代码相同。
  5. 创建并放置标签和输入框:使用LabelEntry控件,并通过grid方法设置位置。sticky=tk.W参数使标签左对齐。
  6. 创建并放置结果Text控件:使用Text控件来显示结果,虽然在这个例子中只显示一行,但Text控件提供了更大的灵活性。
  7. 创建计算按钮:使用Button控件创建了一个计算按钮,并将其command属性设置为calculate_area函数。
  8. 创建清空按钮:使用Button控件创建了一个清空按钮,并将其command属性设置为clear_fields函数。
  9. 运行主循环:与之前的代码相同。

现在,运行这个程序后,你会看到一个使用grid布局组织的窗口,用户可以在输入框中输入底和高的值,然后点击“计算”按钮查看三角形的面积。点击“清空”按钮可以清除所有文本框和结果区域的内容。

posted @ 2025-01-02 15:48  nxhujiee  阅读(13)  评论(0)    收藏  举报