PyQt4
からPyQt5
に移行しました。私のアプリ(QtDesignerで作成)にチェックボックスがあり、ファイルを保存したい場合は「保存」ボタンを有効にします。 PyQt4
でダイアログが開き、私のファイルを選んでOKを押してください。パスが無効な場合、エラーを促すメインアプリケーションの[OK]ボタンのチェックを実装しました。 QFileDialog
でキャンセルを押した場合。QFileDialogポップアップでボタンを押すとアプリケーションが終了する
PyQt5
QFileDialog
を閉じると(OK、キャンセル、X)、私のアプリケーションは完全に終了します。 QFileDialogを閉じてメインウィンドウを閉じないようにします。これはどうすればいいですか?あなたの時間と助けてくれてありがとう。
は、ここに私のコードの関連部分です:
self.path = self.ui.savepathButton.pressed.connect(lambda: self.file_save())
def file_save(self):
path = QFileDialog.getSaveFileName(self, "Choose a path and filename", os.getcwd().replace("\\", "/") +
"/test.stl", filter="Stereolithography Files (*.stl)")
self.ui.savepath_label.setText(path) <------ NO ERROR WITHOUT THIS LINE
def OKButton_click(self):
if os.path.isdir(os.path.split(self.ui.savepath_label.text())[0]) is False:
# Warning if the filename is invalid.
file_error = QMessageBox()
file_error.setIcon(QMessageBox.Warning)
file_error.setText("Invalid path or filename.")
file_error.setInformativeText("Please choose a working path and filename.") file_error.setWindowTitle("File name error")
file_error.setStandardButtons(QMessageBox.Ok)
file_error.exec_()
else:
self.accept()
編集:
私のエラーがどこにあるか私が知っているが、私はまだそれを修正することはできません。コードの行に印を付けました。 self.ui.savepath_label.setText(path)
はなぜアプリケーションを終了しますか?どうやらstring
として自動的にパスを書き込み
PyQt4
ながら、PyQt5
はしない:
私が気づいた 'str()'の回避策を見つけたら、それは実際にタプルを返し、基本的にあなたの答えでうまく説明したことを行いました。あなたの非常に洞察力のあるポストに感謝します! – Ian