0

我一直在使用 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()

此代码创建一个简单的窗口并显示字符串变量的值。另外,我让它打印你在控制台中按下的键,但是我希望能够将这些字符添加到一个字符串中,这样你就可以看到你输入的内容。这是基于文本的游戏的重要组成部分:)

我很感激任何人对此的帮助。谢谢

4

1 回答 1

0

下面的代码展示了如何使用 anEntry从用户那里获取文本输入,而不是尝试手动处理键事件。

它还显示了让用户触发您的两种不同方式——当条目具有焦点时按回车键将调用您的enter函数,而单击按钮将调用您的click函数。还有很多其他的事情你可以触发——每次改变内容、每次按键、Entry 失去焦点……但这两个应该足以展示这个想法。

最后,它展示了如何使用 的内容Entry来修改你的Text,而不是仅仅在控制台上打印一些东西。这里的诀窍是只读文本甚至对insert/etc 也是只读的。方法,因此您必须暂时切换到 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()
于 2013-05-03T00:36:03.777 回答