我一直在使用python和Tkinter一段时间,并决定制作基于文本的游戏。我知道如何在python中执行这些功能,但我希望有一个实际的窗口,而不仅仅是控制台。我已经弄清楚如何制作一个窗口并显示一串文字...但我希望能够输入并显示该文字。
from Tkinter import *
w=Tk()
textvar="Welcome, to the PIT OF INSANLEY INTENSE THINGS... AND STUFF!!!"
def key(event):
print event.char
t=Text(w)
t.insert(INSERT,textvar)
t.configure(state=DISABLED)
t.bind("<Key>",key)
t.pack()
w.mainloop()
此代码生成一个简单的窗口并显示字符串变量的值。另外,我得到它来打印您在控制台中按下的键,但是我希望能够将这些字符添加到字符串中,这样您就可以看到键入的内容了。这是基于文本的游戏的重要组成部分:)
我很感激任何人的帮助。感谢
答案 0 :(得分:0)
下面的代码显示了如何使用Entry
从用户那里获取文本输入,而不是尝试手动处理关键事件。
它还会显示两种不同的方式让用户触发你 - 输入/返回键,而Entry有焦点会调用你的enter
功能,点击按钮会调用你的click
功能。你可以触发各种其他的东西 - 每个内容的变化,每个按键,输入失去焦点,......但这两个应该足以表明这个想法。
最后,它展示了如何使用Entry
的内容来修改Text
,而不是仅仅将某些内容打印到控制台。这里的技巧是只读文本甚至只读insert
/等。方法,所以你必须暂时切换到NORMAL。 (Text
文档解释了大约三分之一的页面。)
from Tkinter import *
w=Tk()
textvar="Welcome, to the PIT OF INSANLEY INTENSE THINGS... AND STUFF!!!"
t=Text(w)
t.insert(INSERT,textvar)
t.configure(state=DISABLED)
t.pack()
def do_command(command):
t.configure(state=NORMAL)
t.insert(INSERT, '\nYou said, "{}"'.format(command))
t.configure(state=DISABLED)
e=Entry()
e.pack(side=BOTTOM)
def enter(event):
do_command(e.get())
e.bind('<KeyRelease-Return>', enter)
def click():
do_command(e.get())
b=Button(text='DOIT!', command=click)
b.pack(side=BOTTOM)
w.mainloop()