2010-06-30 3 views
1

사용자 정의 wx.Dialog가 수평 방향으로 만 리사이즈 할 수있게 해주는 방법이 있습니까? 나는 GetSize()를 사용하여 시도한 다음 SetSizeHints()를 사용하여 윈도우의 최소 및 최대 높이를 설정했지만 어떤 이유로 항상 윈도우의 크기를 조금만 조절할 수 있으며 다소 번거롭게 보입니다. ... 내가 함께 온 다른 유일한 대안은 하드 코드 최소 및 최대 높이,하지만 난 그게 좋은 생각이 될 것이라고 생각하지 않는다Reisze wx.Dialog horizontally only

관련 코드 :

class SomeDialog(wx.Dialog): 

    def __init__(self, parent):        
     wx.Dialog.__init__(self, parent, title="blah blah", 
          style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER) 
     size = self.GetSize() 
     self.SetSizeHints(minW=size.GetWidth(), minH=size.GetHeight(), 
          maxH=size.GetHeight()) 

OS : 윈도우 7
파이썬 버전 : 2.5.4
의 wxPython 버전 : 2.8.10

답변

2

변경할 수있는 높이를 원하지 않는 경우, 왜에 최소 및 최대 높이를 설정하는 것은 좋은 생각이 될 것입니다 같은 가치 (강제하고 싶은 가치)? 물론 GetBetSize 또는 관련 방법을 사용하여 "최상의 가치"에 대한 시스템 추정치를 얻을 수 있습니다. 크기 힌트를 설정하는 것은 특이한 효과가 없다는 사실을 알게되었지만 (wxpython을 사용하는 플랫폼과 Python, wxpython 및 플랫폼/OS 자체의 버전은 무엇입니까? ...?

+0

값을 하드 코딩하는 데별로 신경 쓰지 않습니다. 다른 컴퓨터에서도 똑같을 지 모르므로, 변경 될 때마다 자동으로 렌더링되는 높이의 정확한 값을 알아내는 것은 PITA입니다. 대화 상자에 뭔가가 있습니다. 질문에 버전 정보를 추가했습니다. –

+0

내가 생각하는 GetBestSize 라우트를 완료했습니다. 어쨌든 비슷한 점이 있습니다. 나는 레이아웃 물건이 그 일을하고 현재 지오메트리를 얻고 min과 max를 같은 값으로 설정하게했습니다. 그것은 충분히 잘 작동합니다. 클라이언트 크기와 프레임 크기의 차이에 유의하십시오. 나도 그곳의 세부 사항을 기억하지 못한다. 그러나 그것은 너를 넘어 뜨릴지도 모른다. 또는 최상위 레벨 크기 조정기가 수평이되고 확장으로 플래그가 지정되지 않습니까? –

+0

@ hawk하지만, 모든 시스템 의존성을 처리 할 수있는 "최고의 높이"를 가져야 만합니다. 크기 힌트를 설정하는 경우에도 - 확실히 설정할 필요는 없습니다. 최소 및 최대 높이를 "최상"로 설정하십시오 (위의 작업을 시도하지만 크기 힌트를 통해 수행해야 함). 물론 대화 상자를 변경할 때마다이 간단한 "고정 높이 설정"함수를 다시 호출해야합니다. 그러나 크기 힌트 설정이 작동한다면 그렇게 할 수 있습니다! –

관련 문제