2013-10-10 2 views
2

필자는 파일 브라우저 응용 프로그램을 작성해 왔으며 시작시 첫 번째 열 (파일 이름)의 크기를 올바르게 조정하고 싶습니다. 파이썬 프롬프트에서 다음 코드를 입력 할 수 있으며 열의 크기가 제대로 조정되지만 파일에 넣을 때 열을 실행하려고하면 열의 크기가 조정되지 않습니다. 왜 그런가?resizeColumnToContents가 파이썬 프롬프트에서 대화식으로 작동하지만 PyQt 스크립트에서는 작동하지 않는 이유는 무엇입니까?

#!/bin/env python 

import sys 
import os 
from PyQt4.QtGui import * 
app = QApplication(sys.argv) 
treeView = QTreeView() 
fileSystemModel = QFileSystemModel(treeView) 
rootDir = fileSystemModel.setRootPath(os.path.expanduser('~')) 
treeView.setModel(fileSystemModel) 
treeView.setRootIndex(rootDir) 
treeView.setGeometry(100,100,1024,768) 
treeView.show() 
treeView.resizeColumnToContents(0) 
app.exec_() 

물론 파이썬 프롬프트에 복사 할 때 app.exec_()를 사용하지 않습니다. 열이 크기를 조정하지 않는 원인이 무엇입니까? (편집 : 프롬프트에 "app.exec_()"를 복사 했으므로 이벤트 루프가 시작되어 앱을 사용할 수 있었고 닫은 다음 다시 돌아 왔습니다. 파이썬 프롬프트에서.

+0

나는 현재 RedHat Enterprise Linux 6.4 64 비트 워크 스테이션 (Python 2.6.6 및 Qt 4.6.2 포함)을 실행 중입니다. –

답변

0

으로 전화를 바꾸면 treeView.header().setResizeMode(0, QHeaderView.ResizeToContents)으로 바꾸면 파이썬 프롬프트와 스크립트에서 실행할 때 열이 확장 된 것처럼 보입니다. resizeColumnToContents이 의도 한대로 작동하지 않는 이유가 없습니다.

사이드 노트 : #!/bin/env python#! /usr/bin/env python이어야합니까? 적어도 내 배포판에는 /bin/env이 존재하지 않습니다.

+0

잘 모르겠습니다. resizeColumn 행을 제외하고 모든 항목을 복사하고 시스템의 열의 크기가 적절하다고 말하는가? –

+0

내 시스템에서/usr/bin/env는/bin/env를 가리키는 링크입니다. –

+0

@DougWellington 업데이트 된 답변을 봅니다 (기능이 변경되었습니다). 또한'/ bin/env'를'/ bin/env'를 표준 위치로 생각하기 때문에'/ bin/env'를'/ usr/bin/env'로 바꿀 것입니다. https://en.wikipedia.org/wiki/Env를 참조하십시오. – shanet

관련 문제