Tkinter:将变量设置为字符串输入

时间:2013-05-03 00:25:32

标签: python tkinter

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

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

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

1 个答案:

答案 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()