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 に答える