2016-10-16 1 views
2

저는 Tkinter를 사용하여 파이썬에서 텍스트 기반 게임을하고 있습니다. 창에는 레이블과 몇 개의 버튼 (주로 3 개)이 항상 포함되어 있습니다. GUI가 없다면 Pickle이나 Python I/O (.txt 파일)를 사용하여 데이터를 저장하고 나중에 검색 할 수 있습니다. 그러나 바인딩, 버튼 명령, 클래스 등을 잃지 않고 정확한 위젯을로드하도록 프로그램에 지시하는 가장 좋은 방법은 무엇입니까? 추신 : 버튼을 사용하면 위젯 프레임을 정리하고 새 위젯을 불러 낼 수 있습니다. 변수에 lambda (버튼의 명령)를 할당하고 미래에 그것을로드하고 플롯에서 올바른 지점을 얻을 수 있도록 저장하는 것을 생각하고 있습니다. 나는 그것을 위해 가야 하는가, 아니면 그 일을 성취하기위한 더 나은, 대안적인 방법이 있는가? (람다를 사용할 수 있다면, 그 일을하는 당신의 방법을 보니 여전히 감사 할 것입니다.)게임 내 저장 기능 (tkinter 게임에서)

+0

왜 데이터를 파일로 저장하지 않고 기존 게임을 다시로드 할 수있는 옵션이 있습니까? 당신이 그 일을 막고있는 것은 무엇입니까? –

+0

다양한 유형의 구성 파일 형식과 사용할 파일 형식은 다음을 참조하십시오. https://martin-thoma.com/configuration-files-in-python/ – Arbiter

+0

이 프로젝트를 계속 하시겠습니까? JSON을 * 마크 업 *으로 사용하여 이런 종류의 작업을 수행 할 수있는 프로젝트가 있습니다. 새로운 JSON을 즉시로드하고 뷰를 동적으로 변경할 수 있습니다. 아직 초기 단계에 있지만 데이터 및 명령 바인딩이 포함되어 있습니다. https://github.com/badkraft/razorware.pixelbox – IAbstract

답변

1

일종의 구성 파일에 물건을 저장해야합니다. generel에서는 JSON과 YAML을 파싱의 용이성을 위해 ini 파일 형식으로 사용할 것을 권장합니다.

또한 Windows 레지스트리 (이식성이 손실 됨)를 잊지 마십시오.

+0

YAML을 전혀 추천하지 않습니다. 사용하기에는 너무 복잡하고 지저분합니다. JSON,'ConfigParser' 또는'.py' 파일을 사용하고 싶습니다. – Arbiter

1

필자가 원하는 위치에 놓기 위해 위젯 관리자가 필요하다는 것과 필자는 값을 선택하기가 쉽다는 것을 이해했습니다.

은 다음과 같이 두 가지 기능 _setNewWidget, _deleteWidget을, 관리자라는 새로운 클래스를 작성합니다

class Manager(): 
    def __init__(self, *args, **kwargs): 
     objects = {} 

    def _createButton(self, frame, id, function, etc): 
     # object[id] = frame.Button(function, etc, ...) i dnt' know sintaxes, but this is the way 

    def _deleteWidget(self, id): 
     # object[id] = None or del(object[id]) same here 

을 얻으려면, 단지 :

manager = Manager() 
manager._createWidget("button_fase_one", frameTk, etc, etc) 
manager.objects["button_fase_one"].changeFrame() # example 
print(manager.objects["button_fase_one"].text) 

을 이러한 방법으로 유 객체와 블리트를 만들 수 있습니다 어디서?

데이터를 저장하려면 다른 기능을 만들고 json으로 저장하십시오.

관련 문제