1

我正在 python/tkinter 中开发一个简单的基于文本的游戏,并且到目前为止进行了基本设置。它显示介绍。文本,然后您可以输入(这仍在进行中)。但是,我意识到会有很多文本,并想到了框架的滚动条功能。

但是,我将当前内容添加到框架中,并且这些功能现在不起作用。我是在效仿别人的例子,所以我不知道它是否正确。这是代码:

from Tkinter import *

w=Tk()
w.configure(background="navy")
w.iconbitmap(default="blankIcon.ico")
w.title("Decimated world")
w.resizable(0,0)

introText="When you wake, you see that the sky is dark; you can't tell the time of day."

scen1="You head toward the Town hall."

class App(Frame):
def __init__(self,w):
    Frame.__init__(self,w)
def key(event):
    print event.char

t=Text(w)
t.insert(INSERT,introText)
t.configure(state=DISABLED,background="navy",foreground="white")
t.pack()

def do_command(command):
    t.configure(state=NORMAL)
    t.insert(INSERT,'\n>>> {}'.format(command))
    t.configure(state=DISABLED)

s=StringVar()
e=Entry()
e.configure(background="navy",foreground="white")
e.focus_set()
e.pack(side=BOTTOM)

def enter(event):
    do_command(e.get())
    if e.get()=="walk north":
        t.configure(state=NORMAL)
        t.insert(INSERT,"\n"+scen1)
        t.configure(state=DISABLED)

e.bind("<KeyRelease-Return>",enter)


w.mainloop()

对于将现有功能/小部件放入框架中的任何人的帮助,我将不胜感激。谢谢。

4

1 回答 1

0

只要文本有名称,您就可以使用 pack 和 unpack 方法。

例如:

b = Label(root, text='Click Me')
b.pack()

然后将其删除:

b.pack_forget()

然后当你想再次添加它时,只需键入:

b.pack()

它是如此简单!

于 2013-05-24T01:46:27.867 回答