2013-10-10 25 views
2

我一直在研究一個filebrowser應用程序,我希望第一列(文件名)在啓動時正確調整大小。我可以在python提示符下鍵入以下代碼,並且列的大小適當調整,但是當我將它放入文件並嘗試運行它時,列未調整大小。任何想法爲什麼?爲什麼resizeColumnToContents在python提示符下交互工作,但不是在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_() 

當然,當我將它複製到python提示符時,我離開app.exec_()。那是什麼導致列不能調整大小? (編輯:我複製了「app.exec_()」提示符,它做了你所期望的幾乎 - 事件循環開始,我能夠使用該應用程序,然後關閉它,然後我被返回到python提示符)。

+0

順便說一句,我正在運行RedHat Enterprise Linux 6.4 64位工作站,其中包括Python 2.6.6和Qt 4.6.2 .. –

回答

0

看起來,將調用treeView.resizeColumnToContents(0)替換爲treeView.header().setResizeMode(0, QHeaderView.ResizeToContents)導致從Python提示符和腳本運行時列被展開。我不知道爲什麼resizeColumnToContents不按預期工作。

附註:應該#!/bin/env python#! /usr/bin/env python?至少在我的發行版中,/bin/env不存在。

+0

不知道我是否理解。你是說你複製了一切*除了resizeColumn行和該列在你的系統上的大小適當嗎? –

+0

另外,在我的系統上,/ usr/bin/env是一個指向/ bin/env的鏈接... –

+0

@DougWellington看到我更新的答案(我改變了函數)。另外,我會將'/ bin/env'改成'/ usr/bin/env',因爲這似乎是標準位置(我從來沒有見過使用過/ bin/env)。請參閱https://en.wikipedia.org/wiki/Env。 – shanet

相關問題