최소 너비를 설정하고 보존하는 방법?
문제
WX.LC_REPORT 모드에서 WX.LISTCTRL 클래스를 사용하여 ListCtrLautowidthmixin으로 보강합니다.
문제는 사용자가 열 분배기 (자동 크기 조정 열로)를 두 번 클릭하면 열 너비가 내용 너비와 일치하도록 설정됩니다. 이것은 WX 라이브러리에 의해 수행되며 컨트롤이 비어있을 때 열을 몇 픽셀로 크기로 크게 크게 올립니다.
나는 전화를 시도했다
self.setcolumnwidth (colnumber, wx.list_autosize_useheader)
목록을 작성하는 동안 최소 허용 너비가 아니라 초기 열 너비를 설정합니다.
누구든지 열을 최소 폭을 설정하는 데 성공한 사람이 있습니까?
편집 : 잡기를 시도했습니다
wx.EVT_LEFT_DCLICK
성공하지 못했습니다. 이 이벤트는 사용자가 열 분배기를 두 번 클릭 할 때 생성되지 않습니다. 또한 시도했습니다
wx.EVT_LIST_COL_END_DRAG
이 이벤트는 보통 두 번의 클릭으로 두 번 생성되지만 새 크기에 대한 정보를 검색하거나 드래그 앤 드롭에서 더블 클릭을 구별하는 방법을 알 수 없습니다. 누구든지 다른 아이디어가 있습니까?
해결책 2
좋아, 약간의 투쟁 후에 나는 그것을 위해 일하는 해결 방법을 얻었다. 그것은 디자인의 관점에서 추악하지만 나에게 충분히 잘 작동합니다.
그것이 작동하는 방식입니다.
열의 초기 너비를 저장하십시오.
self.SetColumnWidth(colNum, wx.LIST_AUTOSIZE_USEHEADER) self.__columnWidth[colNum] = self.GetColumnWidth(c)
업데이트 UI 이벤트에 대한 핸들러 등록.
wx.EVT_UPDATE_UI(self, self.GetId(), self.onUpdateUI)
핸들러 기능을 작성하십시오.
def onUpdateUI(self, evt): for colNum in xrange(0, self.GetColumnCount()-1): if self.GetColumnWidth(colNum) < self.__columnWidth[colNum]: self.SetColumnWidth(colNum, self.__columnWidth[colNum]) evt.Skip()
그만큼 self.getColumnCount () -1 의도적이므로 마지막 열은 크기가 크지 않습니다. 나는 이것이 우아한 솔루션이 아니라는 것을 알고 있지만 나에게 충분히 잘 작동합니다. 디바이더를 두 번 클릭하여 열을 너무 작게 만들 수 없습니다 (사실 - 실제로 할 수 없습니다). 마지막 열은 마지막 열을 목록 제어 너비에 맞게 크기를 조정합니다.
그래도 누군가가 더 나은 솔루션을 알고 있다면 게시하십시오.
다른 팁
솔직히, 나는 사용을 위해 유리한 기본 WX.listctrl 사용을 중단했습니다. ObjectListView. 학습 곡선이 약간 있지만 많은 예가 있습니다. 이것 귀하의 질문에 관심이 있습니다.