我一直在尝试使用Tkinter和Python制作一个简单的程序。您所做的只是单击按钮,根据您单击的按钮,它会更新某些标签。这是我的代码:
from tkinter import *
apples = 0
gold = 0
def pick():
global apples
apples = apples + 1
def sell():
global apples
global gold
gold = gold + (apples * 10)
apples = 0
app = Tk()
app.title("Apple Picking Simulator 2014")
app.geometry("400x300+100+60")
label1 = Label(text = "Welcome to Apple Picking Simulator 2014!").pack()
Label().pack()
label2 = Label(text = "Apples: " + apples).pack()
label3 = Label(text = "Gold: " + gold).pack()
button1 = Button(text = "Pick Apple", command = pick).pack()
button2 = Button(text = "Sell Apples", command = sell).pack()
app.mainloop()
现在,每当我尝试运行程序时,我都会收到错误:
TypeError: Can't convert 'int' object to str implicitly
我知道它无法将整数转换为字符串,但我一直在尝试所有内容,而我似乎无法使其工作。是否有一种简单的方法可以在窗口上显示苹果和黄金数字,并在每次点击选择或卖出按钮时更新它们?感谢。
答案 0 :(得分:0)
尝试将整数连接到字符串是导致错误的原因。您需要使用str
function将apples
和gold
整数变量显式转换为字符串。
替换:
label2 = Label(text = "Apples: " + apples).pack()
label3 = Label(text = "Gold: " + gold).pack()
使用:
label2 = Label(text = "Apples: " + str(apples)).pack()
label3 = Label(text = "Gold: " + str(gold)).pack()
修复源代码:
from tkinter import *
apples = 0
gold = 0
def pick():
global apples
apples = apples + 1
def sell():
global apples
global gold
gold = gold + (apples * 10)
apples = 0
app = Tk()
app.title("Apple Picking Simulator 2014")
app.geometry("400x300+100+60")
label1 = Label(text = "Welcome to Apple Picking Simulator 2014!").pack()
Label().pack()
label2 = Label(text = "Apples: " + str(apples)).pack()
label3 = Label(text = "Gold: " + str(gold)).pack()
button1 = Button(text = "Pick Apple", command = pick).pack()
button2 = Button(text = "Sell Apples", command = sell).pack()
app.mainloop()
答案 1 :(得分:0)
您的问题是您正在尝试连接字符串和整数:
label2 = Label(text = "Apples: " + apples).pack()
label3 = Label(text = "Gold: " + gold).pack()
这会产生错误:
>>> apples = 0
>>> "Apples: ", apples
('Apples: ', 0)
>>> "Apples: " + apples
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects
>>>
以下是您编辑的代码:
from tkinter import *
apples = 0
gold = 0
def pick():
global apples
apples = apples + 1
def sell():
global apples
global gold
gold = gold + (apples * 10)
apples = 0
app = Tk()
app.title("Apple Picking Simulator 2014")
app.geometry("400x300+100+60")
label1 = Label(text = "Welcome to Apple Picking Simulator 2014!").pack()
Label().pack()
label2 = Label(text = "Apples: " + str(apples)).pack()
label3 = Label(text = "Gold: " + str(gold)).pack()
button1 = Button(text = "Pick Apple", command = pick).pack()
button2 = Button(text = "Sell Apples", command = sell).pack()
app.mainloop()