当前位置: 首页 > news >正文

TK: 计算三角形的面积

TK代码,将textvariable绑定,改为直接使用text属性设置。以下是修改后的代码,关键改动已用注释标出:

TK

import tkinter as tk
import tkinter.ttk as ttk
import tkinter.messagebox as msgbox  # 添加缺失的导入class app(tk.Frame):def __init__(self):self.root = tk.Tk()super().__init__(self.root)self.root.geometry('300x224')self.root.title('计算三角形的面积')self.create_widgets()self.mainloop()def create_widgets(self):# 底边输入区域self.label1 = tk.Label(text='底', font=('Segoe UI', 9), anchor='w')self.label1.place(x=40, y=24, width=80, height=24)self.entry1 = tk.Entry(font=('Segoe UI', 9))self.entry1.place(x=88, y=24, width=80, height=24)self.entry1.insert(0, '11')  # 设置初始值# 高度输入区域self.label2 = tk.Label(text='高', font=('Segoe UI', 9), anchor='w')self.label2.place(x=40, y=72, width=80, height=24)self.entry2 = tk.Entry(font=('Segoe UI', 9))self.entry2.place(x=88, y=72, width=80, height=24)# 直接设置text属性self.entry2.insert(0, '')  # 初始为空# 结果显示区域self.label3 = tk.Label(text='面积:', font=('Segoe UI', 9), anchor='w')self.label3.place(x=40, y=120, width=224, height=24)# 按钮区域self.button1 = tk.Button(text='计算',font=('Segoe UI', 9),command=self.button1_Command)self.button1.place(x=24, y=176, width=80, height=24)self.button2 = tk.Button(text='清空',font=('Segoe UI', 9),command=self.button2_Command)self.button2.place(x=112, y=176, width=80, height=24)self.button3 = tk.Button(text='退出',font=('Segoe UI', 9),command=self.button3_Command)self.button3.place(x=200, y=176, width=80, height=24)def button1_Command(self):"""计算三角形面积"""try:# 直接从Entry获取文本值base = float(self.entry1.get())height = float(self.entry2.get())area = 0.5 * base * heightself.label3.config(text=f'面积:{area:.2f}')except ValueError:msgbox.showerror("输入错误", "请输入有效的数字")def button2_Command(self):"""清空输入和结果"""# 直接操作Entry组件清空内容self.entry1.delete(0, tk.END)self.entry2.delete(0, tk.END)self.label3.config(text='面积:')def button3_Command(self):"""退出程序"""self.root.destroy()
app()

主要修改点说明:

  1. 移除所有StringVar变量
    • 删除了self.entry1_valueself.entry2_value的定义
    • 删除了所有textvariable属性绑定
  2. 直接使用text属性设置初始值
    • 使用entry.insert(0, '初始值')替代StringVar.set()
    • 使用entry.get()替代StringVar.get()
  3. 调整清空逻辑
    • 使用entry.delete(0, tk.END)替代StringVar.set('')
    • 直接操作组件而不是通过中间变量
  4. 修复导入问题
    • 添加了缺失的tkinter.messagebox导入
  5. 代码结构优化
    • 简化了组件创建时的参数传递
    • 使用更紧凑的语法结构
    • 保持所有原有功能不变
      这种修改方式完全移除了Tkinter变量绑定机制,直接通过组件方法操作界面元素。虽然失去了自动双向绑定的优势,但代码更直接简单,适合小型应用。对于需要频繁数据绑定的复杂应用,建议保留textvariable机制。
http://www.jsqmd.com/news/69405/

相关文章:

  • SAT 辅导机构怎么选?2025 年高性价比机构测评指南(附避坑攻略) - 品牌测评鉴赏家
  • SAT 辅导机构怎么选?2025 年高性价比机构测评与避坑指南(附收费标准与选课攻略) - 品牌测评鉴赏家
  • 公式怎么写
  • 2025春季 PTA 中国大学MOOC上面的数据结构测试第三题 待修正中
  • 完整教程:C如何调用Go
  • vllm部署
  • 漏洞赏金猎人不会告诉你的秘密:从100多个已报告漏洞中总结的技巧
  • 2025.12.9
  • 《程序员修炼之道:从小工到专家》笔记7
  • 2025年铁路地铁电力电缆生产厂家推荐:中低压、低压、中压、变频、聚乙烯绝缘电缆厂家精选指南 - 品牌2026
  • 《程序员修炼之道:从小工到专家》笔记7
  • 2025年铁路地铁电力电缆生产厂家推荐:中低压、低压、中压、变频、聚乙烯绝缘电缆厂家精选指南 - 品牌2026
  • 2025年知名的电缆生产厂家推荐(12月名单):电缆生产厂家推荐 - 品牌2026
  • 个人电脑本地私有知识库:访答知识库的优势与应用解析
  • 个人电脑本地私有知识库:访答知识库的优势与应用解析
  • 深入解析:用 Paimon 做实时数据湖Flink CDC Pipeline 的 Paimon Sink 实战
  • 2025电缆品牌精选:中国电缆一线品牌推荐及十大知名品牌推荐 - 品牌2026
  • 2025年天津低烟无卤电缆生产厂家推荐:实力企业名单请收好 - 品牌2026
  • langchain4j 学习系列(7)-文本分类
  • 结构化建模分析测试 -
  • 编译树莓派AOSP
  • 实用指南:OCR与AI赋能医药资质审核的全流程自动化方案
  • 再见 Heroku:我用这个开源平台,把后端成本砍掉了 80%
  • 托福备考不迷路!这些宝藏机构为你保驾护航 - 品牌测评鉴赏家
  • 2025北京托福机构精选指南:口碑、师资、性价比全解析
  • ts + react + antd Claude.md
  • 日总结 38
  • Spark的运行架构,RDD自带容错机制分析 - f
  • 我们用“平台工程”取代了 DevOps 团队,云成本降低70%
  • 实用指南:学习文本大模型的学习路径,各种大模型对比和分类以及各个大模型对硬件的要求,开源大模型有哪些