2016-09-22 3 views
0

"hide_widgets"기능을 사용하여 내 창에서 모든 버튼을 숨기거나 제거하고 싶습니다. 그러나 나중에 다시 넣을 수는 있지만, 그저 나를 위해 작동하지 않습니다. grid_hide()destroy()을 사용해 보았습니다. 그래서 중 하나를 작동하지 않는 stackoverflow 검색에서. tkinter (파이썬)에서 창을 지우는 방법?

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입니다. 이 동작을 테스트하기 위해 아주 간단한 스크립트를 실행했고 정상적으로 작동했습니다.

+0

그리고 나는 또한 고마워요. – Choncy

+0

당신을 환영합니다! 도움을 줄 수는 없지만 우리가 거의 함수 호출이 부족하다는 것을 보았습니다. ~ –

+0

항상 작은 것들 – Choncy

관련 문제