문제

저는 현재 16개의 창/대화상자가 있고 크기가 약 130KB인 PyGTK/glade 애플리케이션을 작업 중입니다. 결국에는 약 25개의 창/대화상자가 있고 약 200KB가 될 것입니다.현재 저는 모든 창을 하나의 모놀리식 글레이드 파일에 저장하고 있습니다.창을 실행할 때 다음과 같이 호출합니다.

self.wTree = gtk.glade.XML("interface.glade", "WindowXYZ")

각 창을 자체 글레이드 파일로 분할하는 것이 더 나은 아이디어인지 궁금합니다.25개의 창/대화상자가 있는 하나의 글레이드 파일 대신 각각 하나의 창/대화상자가 있는 25개의 글레이드 파일을 갖고 다음과 같이 호출합니다.

self.wTree = gtk.glade.XML("windowxyz.glade")

여러분은 이를 수행하는 가장 좋은 방법이 무엇이라고 생각하십니까?한 방법이 다른 방법보다 리소스를 더 많이 사용합니까?개별 글레이드 파일로 이동하면 좋은 점 중 하나는 위젯 이름을 지정하는 것이 더 쉽다는 것입니다.예를 들어 모든 확인 버튼의 이름을 "windowxyz_ok"로 지정했지만 대신 단순히 "ok"로 변경할 수도 있습니다.일을 더 간단하게 만듭니다.단점은 다른 창을 변경하는 것이 약간 덜 편리할 수 있다는 것입니다.

나는 모든 논쟁에 열려있습니다.감사해요!

도움이 되었습니까?

해결책

내 프로젝트에서는 항상 글레이드 파일당 하나의 창을 사용합니다.귀하의 프로젝트에도 동일한 것을 권장합니다.

다음은 두 가지 주요 이유입니다.

  • gtk.glade.XML()을 호출할 때마다 전체 내용을 구문 분석하므로 속도가 더 빠르고 메모리도 덜 사용하게 됩니다.물론 모든 창에 대한 위젯 트리를 생성하지 않으려면 루트 인수를 전달할 수 있지만 여전히 해야 합니다. 분석하다 관심이 없더라도 모든 XML을 삭제하세요.
  • 개념적으로 창당 최상위 수준이 하나씩 있으면 이해하기가 더 쉽습니다.파일 이름만 보면 주어진 대화 상자/창이 어떤 파일 이름에 있는지 쉽게 알 수 있습니다.

다른 팁

차이가 있는지 알아보기 위해 시간을 좀 투자해 보셨나요?

문제는 내가 이해하는 한 Glade가 XML 파일을 구문 분석할 때 항상 모든 위젯을 생성하므로 XML 파일을 열고 단일 위젯만 읽는다면 많은 리소스를 낭비한다는 것입니다.

또 다른 문제는 해당 위젯의 다른 인스턴스를 갖고 싶다면 파일을 다시 읽어야 한다는 것입니다.

이전에 내가 했던 방식은 한 번만 생성된 모든 위젯(예: 정보 창, 기본 창 등)을 하나의 글레이드 파일에 넣고, 여러 번 생성해야 하는 위젯에 대해 별도의 글레이드 파일을 넣는 것이었습니다.

나는 다른 창에 대해 다른 글레이드 파일을 사용합니다.하지만 동일한 글레이드 파일의 창과 관련된 대화 상자를 유지합니다.말씀하신대로 네이밍 문제가 짜증나네요.

2개의 창이 있는 하나의 글레이드 파일이 있습니다.크기는 약 450kb이며 GTKmm과 함께 libglademm을 사용하면 속도가 느려지는 것을 본 적이 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top