Python 2.7 Tkinter输入替换
我一直在Tkinter开发一个基于文本的游戏,我需要一种方法来允许输入更灵活。基本上,我要寻找的是如何编码:Python 2.7 Tkinter输入替换,python-2.7,tkinter,Python 2.7,Tkinter,我一直在Tkinter开发一个基于文本的游戏,我需要一种方法来允许输入更灵活。基本上,我要寻找的是如何编码: if Input.get() == "look at" Item: Item.look() 但由于“item”是一个类,具有子类的灵活性,所有这些都可以“查看”。这是我的当前(非工作)代码: def Check(): if Output == "look at" Item: Item.look() else: pass class
if Input.get() == "look at" Item:
Item.look()
但由于“item”是一个类,具有子类的灵活性,所有这些都可以“查看”。这是我的当前(非工作)代码:
def Check():
if Output == "look at" Item:
Item.look()
else:
pass
class Item():
def __init__(self, name, description, value, quantity):
self.name = name
self.description = description
self.value = value
def look(self):
Look.Title = "{}".format(self.name)
Look.Description = "{}".format(self.Description)
Look.Value = "{} is worth {}.".format(self.name, self.value)
Details.insert(Look.Title)
Details.insert(Look.Description)
Details.insert(Look.Value)
Details.insert(Look.Quantity)
class Headphones(Item):
def __init__(self):
super.__init__(name = "Headphones", description = "A set of high quality white headphones.", value = 150)
非常感谢您的帮助,Blaze您需要在输入和要调用的函数之间进行某种映射。您需要解析字符串,以便从输入字符串中提取对象,并使用解析结果查找适当的对象或类 例如,您可以使用正则表达式来解析字符串“lookatx”,然后使用“X”作为字典的索引,以便知道实例化哪个类 下面是一个简单的例子:
import re
class Headphones(object):
def look(self):
print("you are looking at headphones")
class Goggles(object):
def look(self):
print("you are looking at goggles")
class Unknown(object):
def look(self):
print("I don't know what you're looking at")
def check(input):
map = {
"goggles": Goggles,
"headphones": Headphones,
}
match = re.match(r'look at (.*)', input)
if match:
thing = match.group(1)
cls = map.get(thing, Unknown)
object = cls()
object.look()
for phrase in ("look at headphones",
"look at goggles",
"look at something else"):
check(phrase)
注意:这是解决问题的多种方法之一。关键是,您需要:
解析器可以是任何形式,从简单地在空格上拆分输入并获取最后一个单词,到使用正则表达式,再到使用类似的完整解析器 您认为这有什么作用:
如果Input.get()=“查看”项:
?这是无效的语法,我猜不出您认为项
部分在做什么。你想让它和“看”连接起来吗?你是在问如何将用户输入的“查看耳机”
转换为运行代码耳机。look()
我是这样尝试的,因为还有一些代码(我已经忘记)是这样工作的。出于某种原因。我想问的是,如何将用户输入的“看耳机”转换为运行headphones.look(),或“看护目镜”转换为运行goggles.look(),或“看手机”转换为运行phone.look(),等等,这样它就可以在任何项目上运行。