按下按钮时将变量增加1

2024-10-01 11:40:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在试图找出tkinter,因为我的计算机科学项目需要它,所以我对它还是很陌生,但我试图制作一个按钮,当按下时,一个变量会增加,并以改变的数量输出

这是我尝试的原始代码:

from tkinter import *

root = Tk()

item_num = 0


def AddButton():
    global item_num
    item_num =+ 1
    item_text = "Item "+ item_num
    item1 = Label(receiptFrame, text=item_text, padx=25, pady=10)
    item1.pack()

addButton = Button(root, text="Add Button", padx=25, pady=25, command=AddButton)
addButton.pack()

receiptFrame = Frame(root, width=70, height=30)
receiptFrame.pack()

root.mainloop

当我按下按钮时,会出现:

item_text=“item”+item_num

TypeError:只能将str(而不是“int”)连接到str

我尝试使用在这里找到的另一个解决方案,使用IntVar(),set&;获取,但运行时,我获得:

TypeError:只能将str(而不是“IntVar”)连接到str

from tkinter import *

root = Tk()

item_num = 0
item_num = IntVar()

def AddButton():
    global item_num
    item_num.set(item_num.get()+1)
    item_num = int(item_num)
    item_text = "Item "+ item_num
    item1 = Label(receiptFrame, text=item_text, padx=25, pady=10)
    item1.pack()

addButton = Button(root, text="Add Button", padx=25, pady=25, command=AddButton)
addButton.pack()

receiptFrame = Frame(root, width=70, height=30)
receiptFrame.pack()

root.mainloop

我也尝试过使用lambda将item_num作为参数放入函数中,但当我这样做时,按钮根本无法再次按下,因此我不确定哪里出了问题

再说一次,我不完全确定我在做什么,所以我很欣赏任何半初学者的解决方案(啊哈:)


Tags: texttkinterbuttonrootitem按钮numpack
1条回答
网友
1楼 · 发布于 2024-10-01 11:40:14

您正在使用+进行连接,这是一个问题,因为+的两边都需要是字符串。此外,您还有其他问题,如:

  • 您使用了=+ 1,这意味着该值始终是+1(正1),应该是+= 1,因此每次增加1
  • 您还忘了将()放在mainloop()的末尾
  • 每次单击按钮时都会创建一个新标签,而不是创建一个标签并更改其文本

因此,最终的格式化代码是:

from tkinter import *

root = Tk()

item_num = 0
def AddButton():
    global item_num

    item_num += 1 # Add current value plus 1
    item_text = "Item"+str(item_num) 
    item1.config(text=item_text) # Change the text of the label
    print(item_text)

item1 = Label(root, padx=25, pady=10) # Make the label for the first time
item1.pack()
# Same code...

root.mainloop() # Important ()

还有其他方法可以使用writeitem_text,如:

item_text = "Item"+str(item_num) # This returns a string
item_text = "Item",item_num # This returns a tuple
item_text = f'Item{item_num}' # This returns a string
item_text = "Item{}".format(item_num) # This returns a string as well

相关问题 更多 >