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

Tkinter如何将单价与数量的乘积自动设为金额输入框的非编辑默认值

Tkinter凭证录入界面自动计算金额实现方案

你需要通过变量监听+输入框状态控制实现需求,具体修改逻辑如下:

  • 为单价、数量输入框绑定StringVar关联变量,监听变量内容变化事件
  • 编写计算逻辑,处理非数值输入的异常场景,避免程序报错
  • 将金额输入框默认设置为禁用状态,仅在程序赋值时临时开放编辑权限

完整修改后代码

import tkinter as tk
from tkinter import *
from PIL import Image, ImageTk
from tkinter import ttk
import mysql
import mysql.connector
from tkinter import messagebox
import datetime
from datetime import date
from ttkwidgets.autocomplete import AutocompleteCombobox

adde=Tk()     
frm3=Frame(adde)
frm3.place(x=191,y=0,relwidth=1,relheight=1)
frm3.configure(bg='#E5E4E2')

# 定义关联变量
price_var = StringVar()
qty_var = StringVar()

# 金额自动计算函数
def calc_amount(*args):
    try:
        # 获取输入的数值,转换为浮点型
        price_val = float(price_var.get().strip())
        qty_val = float(qty_var.get().strip())
        # 计算金额,保留2位小数符合财务场景要求
        amount_val = round(price_val * qty_val, 2)
        # 临时开放金额输入框编辑权限,写入数值后再禁用
        amount_01.config(state=NORMAL)
        amount_01.delete(0, END)
        amount_01.insert(0, str(amount_val))
        amount_01.config(state=DISABLED)
    except ValueError:
        # 输入不是合法数字时清空金额
        amount_01.config(state=NORMAL)
        amount_01.delete(0, END)
        amount_01.config(state=DISABLED)

# 绑定变量变化监听
price_var.trace_add('write', calc_amount)
qty_var.trace_add('write', calc_amount)

# Unit price
price = Label(frm3, text="Unit Price",bg='#E5E4E2', font=("times new roman", 10)).place(x=555, y=290)
price_01 = Entry(frm3, textvariable=price_var)
price_01.place(x=555, y=310, width=70)

# Quantity
qty = Label(frm3, text="Quantity",bg='#E5E4E2', font=("times new roman", 10)).place(x=635, y=290)
qty_01 = Entry(frm3, textvariable=qty_var)
qty_01.place(x=635, y=310, width=60)

# Amount
amount = Label(frm3, text="Amount",bg='#E5E4E2', font=("times new roman", 10)).place(x=705, y=290)
amount_01 = Entry(frm3)
amount_01.place(x=705, y=310, width =100)
# 初始化金额输入框为禁用状态
amount_01.config(state=DISABLED)

adde.title(" Voucher Entry ")
adde.geometry("1400x700")
adde.configure(bg='#659EC7')
adde.mainloop()

实现说明

  1. 输入框状态控制:金额输入框默认设为DISABLED,用户无法手动编辑,仅当程序需要写入计算结果时临时切换为NORMAL状态,写入完成后立即恢复禁用,完全满足只读要求。
  2. 异常兼容:当用户输入非数值内容、或其中一个输入框为空时,金额会自动清空,不会触发程序报错。
  3. 精度处理:计算结果默认保留2位小数,符合财务凭证的金额录入规范,你可以根据实际需求调整保留位数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:15:04