我正在研究python,并试图制作一个与GUI连接的猜数字程序。但是,存在错误,并且我不知道如何解决,因此请帮助我。
我的代码是
from tkinter import*
import random
class Application(Frame):
def __init__(self, master):
super(Application, self).__init__(master)
self.grid()
self.widgets()
self.answer = Guessing_game(starting_number = 0,
ending_number = 100)
def widgets(self):
Label(self,
text = "Hello welcome to new_version of the Guess My Number!"
).grid(row = 0, column = 0, sticky = W)
Label(self,
text = "Guess the number(0-100):"
).grid(row = 1, column = 0, sticky = W)
self.user_answer = Entry(self)
self.user_answer.grid(row = 1, column = 1, sticky = W)
Button(self,
text = "submit",
command = self.submit
).grid(row = 3, column = 0, sticky = W)
self.txt = Text(self, width = 50, height = 20, wrap = WORD)
self.txt.grid(row = 4, column = 0, columnspan = 4, sticky = W)
def submit(self):
user_answer = self.user_answer.get()
if user_answer != None:
int(user_answer)
if int(user_answer) not in range(101):
self.txt.delete(0.0, END)
self.txt.insert(0.0, "Your guess is not in proper range")
elif int(user_answer) > self.answer:
self.txt.delete(0.0, END)
self.txt.insert(0.0, "Your guess is higher than the answer")
elif int(user_answer) < self.answer:
self.txt.delete(0.0, END)
self.txt.insert(0.0, "Your guess is lower than the answer")
else:
self.txt.delete(0.0, END)
self.txt.insert(0.0, "Your guess is right! the number is", self.answer)
class Guessing_game(object):
def __init__(self, starting_number, ending_number):
self.answer = random.randint(starting_number,ending_number)
def __str__(self):
return self.answer
#main
root = Tk()
app = Application(root)
root.mainloop()
错误是
Tkinter回调Traceback中的异常(最近一次调用最近):
文件“ C:\ Python31 \ lib \ tkinter__init __。py”,行1399,在调用返回self.func(* args)文件“ D:/ Python / practice / Guess_My_Number( GUI).py“,第43行,位于Submit elif int(user_answer)> self.answer:TypeError:不可排序的类型:int()> Guessing_game()
如何将Guessing game()对象转换为int(),以便可以比较该对象和int?
它准确地告诉您错误是什么,您正在将对象与整数进行比较。相反,您应该在对象内部引用变量
if int(user_answer) > self.answer.answer:
...
可能要考虑修正此命名。或者考虑您是否甚至需要一堂课。另外,您的__str__
方法不正确,返回值必须为字符串,而您尝试返回整数(尝试执行此操作可以看到此结果)。print(Guessing_game(0, 100))
以下内容也不尽如人意
if user_answer != None:
int(user_answer)
user_answer
始终是一个字符串,因为您是从Entry小部件中获取值的。
相反,您可能想要
# Check if the string is a number
if not user_answer.isdigit():
# Some error message
return # prevent trying anything else
您还需要重新分配结果,int(user_answer)
因为它不会修改您的变量,因此它实际上什么也不做(除非遇到错误)。
user_answer = int(user_answer)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句