2012-08-29 4 views
0

wxpython을 사용하여 gui 실행 파일을위한 스플래시 화면을 설정하려고합니다. 본질적으로 내가하고있는 일은 많은 데이터베이스를 먼저로드하는 것입니다. 그런 다음 wx GUI 창을 설정했습니다. 이 두 프로세스는 약 35 초가 걸립니다.wxpython 및 스플래쉬 화면

코드를 시작할 때 GUI가 시작되어 실행될 때까지 (35 초 후) 스플래시 화면을 표시하고 싶습니다.

는 I이 살펴 보았다 : How to adapt my current splash screen to allow other pieces of my code to run in the background?

내 WX 코드의 외부에 내 데이터베이스를로드하기 때문에하지 않습니다 매우 도움이됩니다.

예를 들어

: 내가 데이터베이스를 참조하는 여러 클래스를 가지고 있기 때문에

Imports 
Database loading 
class (my wx) 

은 내가 WX 외부 데이터베이스 로딩을한다. 나는 상당히 Python에 익숙하지 않다. - 제발 내게는 쉽다. :)

wx에서 내 GUI를로드 할 때 데이터베이스로드 및 중지 전에 시작하기위한 스플래시 화면 설정에 도움이 필요합니까? 감사!

+0

데이터베이스로드를 스레드에 배치하고 데이터베이스가로드 될 때 증가 할 변수 (카운터 등)를 사용할 수 있으며 스플래시 화면에서 해당 변수를 읽고 모든 것이 완료 될 때까지 게이지를 표시합니다. –

+0

^wx.CallAfter를 사용하여 GUI를 업데이트하는 것이 더 쉽고 오류가 발생하기 쉽습니다. – dav1d

+0

wx.CallAfter에 대해 읽었지만 구현 방법을 모르겠습니다. 너는 제안이 있니? – mcfly

답변

3

나는 이것에 대해 조금 뒤쪽으로 가고 있다고 생각합니다. 데이터베이스의 로딩을 프레임 또는 wx.App의 init에 넣습니다. 그러나로드하기 전에 스플래시 화면을 표시하십시오. 그런 다음로드를 수행하십시오. 그런 다음로드가 완료되면 GUI로드를 수행하고 프레임의 Show() 메소드에 도달하기 직전에 스플래시 화면을 닫습니다.

+0

이게 좋겠지 만 데이터베이스 (변수 및 목록)는 다른 모든 클래스에서도 사용할 수 있습니까? 예를 들어, 모든 변수가 동일한 변수/목록에 액세스하는 약 4 개의 클래스가 있습니다. 이것은 특정 클래스 내부가 아니라 .py 파일의 시작 부분에 데이터베이스가로드 된 이유입니다. – mcfly

+0

코드가 어떻게 배열되어 있는지 알지 못합니다. 일반적으로 데이터베이스 코드를 model.py 파일에 저장하고 처음에는로드 한 다음 다른 컨트롤러 클래스로 가져온 컨트롤러로 액세스합니다. 내 medialocker 프로젝트는 https://bitbucket.org/driscollis/medialocker에 대한 단서를 제공합니다. 나는 또한 이전 버전에 대해 여기에 쓴 : http://www.blog.pythonlibrary.org/2011/11/10/wxpython-and-sqlalchemy-an-intro-to-mvc-and-crud/ –

+0

내 코드 있음 모듈성이 설계 요구 사항이기 때문에 [pubsub] (http://wiki.wxpython.org/WxLibPubSub)를 사용하여 DB I/O를 처리하는 것을 좋아합니다. 내 프레임을 사용하여 내 DB를 초기화하지만 다른 모든 DB 호출은 pubsub 메시지를 통해 수행됩니다. 그런 식으로 수업은 내 DB가 있는지, 데이터를 요청하고 수신하는 방법 만 알 필요조차 없습니다. pubsub 메시지가 비동기임을 기억하십시오! – acattle