我是编程和python的新手,并且已经使用控制台编写了一个简单的基于文本的RPG来输出和输入。我想改为使用tkinter将文本输出转换为小部件,并通过键盘按键输入键。获得tkinter窗口布局后,我想知道如何获取不同的输入以使用tkinter事件。
def main_menu(hero):
choice = ' '
while choice not in ['0', '1', '2', '3']:
while choice != '0' and hero.health > 0:
print("\n" * 80)
print(hero)
print("Where would you like to go?\n"
"[1] Adventure\n"
"[2] Temple\n"
"[3] Store\n\n"
"[0] Save & Quit")
choice = input(">")
if choice == '1':
adventure(hero)
elif choice == '2':
temple(hero)
elif choice == '3':
store(hero)
elif choice == '0':
save(hero)
当通过tkinter输入选择时,我希望它继续进入下一个功能,例如 store()我想得到一个新的从tkinter输入以解析下一个要调用的函数
def store(hero):
item_type = ''
while item_type not in ['1', '2', '3']:
print("\n" * 80)
print("What would you like to buy?"
"\n[1] Weapons"
"\n[2] Armor"
"\n\n[3] Leave")
item_type = str(input(">"))
if item_type == '1':
weapon_store(hero)
item_type = ''
elif item_type == '2':
armor_store(hero)
item_type = ''
else:
input("Okay, have a good day.\n")
答案 0 :(得分:0)
如果我能帮助你,
我想更改为使用tkinter将文本输出到窗口小部件
为此,我们使用Labels
。我们举一个简短的例子:
var = StringVar()
label = Label( root, textvariable=var, relief=RAISED )
var.set("Hey!? How are you doing?")
label.pack()
用于设置标签的内容。您可以使用字符串变量&你可以随时改变它。
通过键盘按键输入
def key(event):
print "pressed", repr(event.char)
def callback(event):
frame.focus_set()
print "clicked at", event.x, event.y
frame = Frame(root, width=100, height=100)
frame.bind("<Key>", key)
frame.bind("<Button-1>", callback)
frame.pack()
如果您运行此脚本,您会发现在开始接收任何键盘事件之前必须先单击框架。
答案 1 :(得分:0)
我设法通过将按键更改为StringVar然后在我希望它接收新输入的代码中使用wait_variable来解决我的问题。