将 Comboboxes tkinter 中的数字相加 python

Add together numbers from Comboboxes tkinter python

我想添加用户 select 来自不同组合框的多个值。然后我想将这些值加在一起并在框旁边显示总值。问题似乎是组合框中的“值”是字符串,因此不能加在一起。 如果你想要 运行 这个程序,只需在最后一个 for 循环之前注释掉变量 "totalvalues。(我知道它看起来很奇怪,我只是试图制作一个新程序来显示我的问题)

 import tkinter as tk
from tkinter import ttk
from tkinter import scrolledtext
win=tk.Tk() #window
win.title("Moskalkylator")
antalcomboboxes=4
mighty=ttk.LabelFrame(win,text='Welcome')
mighty.grid(column=0,row=0,padx=8 ,pady=4)

Items=['Wood','Iron','Plastic','Glass']
def click():
    calculate = ttk.Label(win, text="Your total number of items is : " + totalvalues.get()) # See row 27
    calculate.grid(column=1, row=0)
buttons_frame=ttk.LabelFrame(mighty)
buttons_frame.grid(column=1,row=8, padx=3, pady=3,sticky=tk.W)

calculate=ttk.Button(buttons_frame,text='Count', command=click).grid(column=1,row=8)
#Creates combobox 1
list1=list(range(11))
number_chosen1= ttk.Combobox(mighty,values=list1, state="readonly") #The number you pick in the combobox
number_chosen1.grid(column=1,row=1,sticky=tk.W)
#Creates combobox 2
list2=list(range(11))
number_chosen2= ttk.Combobox(mighty,values=list2, state="readonly")
number_chosen2.grid(column=1,row=3,sticky=tk.W)

###############

totalvalues=number_chosen1+number_chosen2 #This does not work! COMMENT THIS

###############

#Loop to get the names of the items above combobox
Items_order=0
row_move_loop2=0
for element in Items:
    article = ttk.Label(mighty, text=Items[Items_order])
    article.grid(column=1, row=row_move_loop2)
    Items_order=Items_order+1
    row_move_loop2=row_move_loop2+2

win.mainloop()

您必须使用 get() 方法从 combobox 获取值并将它们转换为整数。另外,不要在每次要显示计数时都创建新标签,而是创建一次标签并使用 configure 方法更改文本。

这是您更正后的代码:

import tkinter as tk
from tkinter import ttk
from tkinter import scrolledtext

win=tk.Tk() #window
win.title("Moskalkylator")
antalcomboboxes=4
mighty=ttk.LabelFrame(win,text='Welcome')
mighty.grid(column=0,row=0,padx=8 ,pady=4)

Items=['Wood','Iron','Plastic','Glass']

def click():
    global totalvalues
    if number_chosen1.get() != '' and number_chosen2.get() != '':
        totalvalues= int(number_chosen1.get()) + int(number_chosen2.get())

    calculate.configure(text="Your total number of items is : " + str(totalvalues))


buttons_frame=ttk.LabelFrame(mighty)
buttons_frame.grid(column=1,row=8, padx=3, pady=3,sticky=tk.W)

calculate=ttk.Button(buttons_frame,text='Count', command=click).grid(column=1,row=8)
#Creates combobox 1
list1=list(range(11))
number_chosen1= ttk.Combobox(mighty,values=list1, state="readonly") #The number you pick in the combobox
number_chosen1.grid(column=1,row=1,sticky=tk.W)
#Creates combobox 2
list2=list(range(11))
number_chosen2= ttk.Combobox(mighty,values=list2, state="readonly")
number_chosen2.grid(column=1,row=3,sticky=tk.W)

###############
print(number_chosen1.get())

totalvalues = 'None'

calculate = ttk.Label(win) # See row 27
calculate.grid(column=1, row=0)

###############

#Loop to get the names of the items above combobox
Items_order=0
row_move_loop2=0
for element in Items:
    article = ttk.Label(mighty, text=Items[Items_order])
    article.grid(column=1, row=row_move_loop2)
    Items_order=Items_order+1
    row_move_loop2=row_move_loop2+2

win.mainloop()

当您将值作为字符串检索时,您需要转换它们。

totalvalues=int(number_chosen1)+int(number_chosen2)

totalvalues=float(number_chosen1)+float(number_chosen2)