首页 > 解决方案 > 使用 tkinter,如何解决 python 中第二个按钮导致第二个按钮无法正确显示的问题

问题描述

我想使用 tkinter 创建一个简单的计算系统。首先用户需要输入金额,有 3 个第一行按钮和 2 个第二行按钮。用户输入他们的值后,然后单击包含值 4、8 和 12 的任何第一行按钮。用户输入的数量将乘以第一个按钮中包含的值。然后第一个按钮的结果将乘以第二行按钮。然后最终结果将显示在底部。问题是在第二行按钮中,我无法正确显示结果,我尝试在第二个按钮功能中使用 if 语句,但它不起作用。大家有什么想法可以帮我解决的麻烦分享一下,谢谢

这里的代码供您参考

from tkinter import *

root = Tk()

root.title("Calculation")
e = Entry(root, width = 35, borderwidth = 5)
e.grid(column=0,row=0,columnspan=3, padx = 10,pady=10)

res = Entry(root, width = 35, borderwidth = 5)
res.grid(row = 4, column = 0, columnspan = 3, padx = 10, pady=10)

def multi_4(number):
    duration= int(e.get())*number
    global f_num1
    global current_number
    current_number = duration
    f_num1 = duration
    res.delete(END)
    res.insert(0,duration)
  
def multi_8(number):
    duration= int(e.get())*number
    global f_num2
    global current_number2
    current_number2 = duration
    f_num2 = duration
    res.delete(0,END)
    res.insert(0,duration)
    return duration

def multi_12(number):
    duration= int(e.get())*number
    global f_num3
    global current_number3
    current_number3 = duration
    f_num3 = duration
    res.delete(0,END)
    res.insert(0,duration)
    return duration

def multi_52(number):
    
    res.delete(0,END)
    res.insert(0, f_num1 * number)
    res.insert(0,f_num2 * number)
    res.insert(0, f_num3 * number)

def multi_12i(number, duration):
    total = duration * number
    res.delete(0,END)
    res.insert(0,total)

button_1 = Button(root, text="4 (2024)", padx =40, pady =20, command=lambda: multi_4(4))
button_2 = Button(root, text="8 (2028)", padx =40, pady =20, command=lambda: multi_8(8))
button_3 = Button(root, text="12 (2032)", padx =40, pady =20, command=lambda: multi_12(12))
button_4 = Button(root, text="52 Weeks", padx =40, pady =20, command=lambda: multi_52(52))
button_5 = Button(root, text="12 Months", padx =40, pady =20, command=lambda: multi_12i(12))


#put the button on the screen
button_1.grid(row = 1 , column=0)
button_2.grid(row = 1 , column=1)
button_3.grid(row = 1, column=2)

button_4.grid(row = 2, column=0)
button_5.grid(row = 2, column=2)

root.mainloop()

标签: pythontkinter

解决方案


推荐阅读