プログラムの残りの部分がコンソール出力にある間にQtGui.QFileDialog.getExistingDirectory()
、プログラムのダイアログ ウィンドウでパスを取得して、ユーザーの作業を楽にしようとしています。python
この目的のために、次のコードがあります。
import sys, os
from PyQt4 import QtGui
def getpath(filename,
noPathFileMsg='',
wrongFolderMsg='',
selectFolderMsg=''):
try:
f = open('./'+filename,'r')
except IOError:
folder = get_new_path(filename,
noPathFileMsg,
selectFolderMsg)
else:
folder = f.readline()
f.close()
currentDir = os.getcwd()
try:
os.chdir(folder)
except:
folder = get_new_path(filename,
wrongFolderMsg,
selectFolderMsg)
else:
os.chdir(currentDir)
finally:
return folder
def get_new_path(filename,
infoMsg,
selectFolderMsg):
app = QtGui.QApplication(sys.argv)
QtGui.QMessageBox.about(None, 'No folder', infoMsg)
folder = QtGui.QFileDialog.getExistingDirectory(None, selectFolderMsg)
app.exit()
if os.name == 'posix':
folder += '/'
elif os.name == 'nt':
folder += '\\'
g = open('./'+filename,'w')
g.write(folder)
g.close()
return folder
if __name__ == '__main__':
folderPath = getpath('pathtofolder.txt',
noPathFileMsg='The path to the folder has not been set',
wrongFolderMsg='The path folder saved cannot be reached',
selectFolderMsg='Please select a folder')
print folderPath
var = input('The program stopped at the input instruction, the dialog window should now be closed!')
getpath 関数を呼び出すと、ダイアログ ウィンドウは、この命令の直後に閉じるのではなく、関数を呼び出したスクリプトが終了するまで開いたままになります。
folder = QtGui.QFileDialog.getExistingDirectory(None, selectFolderMsg)
このコードを実行すると、スクリプトが実行されるフォルダーにダイアログ ウィンドウで保存されたディレクトリを保存するファイルが作成されます。
私は何を間違えましたか?
ちなみにUbuntu12.04です。ありがとうございました!乾杯