2016-09-22 10 views
0

「hide_widgets」機能を使用して(一時的に)私のウィンドウからすべてのボタンを非表示/削除したいので、私はそれらを戻すことができますが、私にとってはうまく機能しません。grid_hide()destroy()と、ので、どちらかを働いていないとしてstackoverflowを検索するからです。ここでtkinter(Python)のウィンドウをクリアするには?

は私のプログラムは、これまでのところです:

from tkinter import * 

class Application(Frame): 
    #GUI Application 

    def __init__(self, master): 
     #Initialize the Frame 
     Frame.__init__(self,master) 
     self.grid() 
     self.create_widgets() 

    def create_widgets(self): 
     #Create new game etc... 

     #Title 
     self.title = Label(self,text = "Gnome") 
     self.title.grid() 

     #New Game 
     self.new_game = Button(self,text = "New Game") 
     self.new_game ["command"] = self.create_new_game 
     self.new_game.grid() 

     #Load Game 
     self.load_game = Button(self,text = "Load Game") 
     self.load_game ["command"] = self.display_saves 
     self.load_game.grid() 

     #Settings 
     self.settings = Button(self,text = "Settings") 
     self.settings ["command"] = self.display_settings 
     self.settings.grid() 

     #Story 
     self.story = Button(self,text = "Story") 
     self.story ["command"] = self.display_story 
     self.story.grid() 

     #Credits 
     self.credits = Button(self,text = "Credits") 
     self.credits ["command"] = self.display_credits 
     self.credits.grid() 

    def hide_widgets(self): 
     #clear window 
     new_game.grid_forget() 

    def create_new_game(self): 
     #Create new game file 
     self.hide_widgets 
     self.instruction = Label(self, text = "Name World:") 
     self.instruction.grid() 

     self.world_name = Entry(self) 
     self.world_name.grid() 

    def display_saves(self): 
     #display saved games and allow to run 
     print("saves") 

    def display_settings(self): 
     #display settings and allow to alter 
     print("settings") 

    def display_story(self): 
     #display story 
     print("story") 

    def display_credits(self): 
     #display credits 
     print("credits") 

root = Tk() 
root.title("Welcome") 
width, height = root.winfo_screenwidth(), root.winfo_screenheight() 
root.geometry('%dx%d+0+0' % (width,height)) 
app = Application(root) 

root.mainloop() 

は、事前にありがとうございます。

+0

非表示または無効にしますか? –

+0

「new_game.hide()」のような意味ですか?いずれも機能しません。 – Choncy

+0

いいえ、状態を変更するか、一時的に完全に削除しますか? –

答えて

0

私は今、愚かな私は忘れて "()" self.hide_widgets()で、私はそれが代わりに変数を作成していたとしてエラーがなかったので、それについて考えたことはありません。

1

grid_forget()メソッドを呼び出すことでButtonを非表示にすることができます。

もっと簡単にするには、それらをすべて含むself.buttonsリストまたは辞書を作成したい場合があります。

また、Applicationインスタンスで使用できるgrid_slaves()メソッドもあります。これは、管理するすべてのwidgestのリスト(または指定した行または列のもののみ)のリストを提供します。 Buttonはこれらのリストのいずれかになります。私はそれを使用したことがないので、返されたリストでそれらを特定するのがどれほど簡単かわかりません。

0

new_game.grid_forget()self.new_game.grid_forget()に置き換えてみましたか?

チェックthisなぜselfを明示的に参照する必要があるのか​​説明してください。私はこの動作をテストするための非常に簡単なスクリプトを実行し、うまくいきました。

+0

と私も必要でした、ありがとう – Choncy

+0

よろしくお願いします!助けても笑うことはできませんでした。実際には、関数呼び出しの欠如をほとんどすべて見てきました〜 –

+0

常に小さなもの – Choncy

関連する問題