Dan*_*zer 2 python pyqt python-3.x pyqt5
我是Python的新手,尤其是PyQT的新手。我使用PyQT5创建了一个非常简单的GUI。现在,我想对其进行升级,使其包含一些比计算数字运算更真实的东西。
我希望用户选择包含图像的目录。之后,以及其他一些小操作,例如勾选一些复选框,我想在后台运行我的算法,同时要通过progressBar向他/她显示进度。
这是我现在的代码:
import sys
from os.path import expanduser
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5 import uic, QtGui
Ui_MainWindow, QtBaseClass = uic.loadUiType("mainGui_3A.ui")
class MyApp(QMainWindow):
def __init__(self):
super(MyApp, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.ui.pushButton_Directory.clicked.connect(self.choose_directory)
self.ui.pushButton_CreateAlbum.clicked.connect(self.create_album)
def choose_directory(self):
my_dir = QtGui.QFileDialog.getExistingDirectory(
self,
"Open a folder",
expanduser("~"),
QtGui.QFileDialog.ShowDirsOnly
)
self.ui.lineEdit_Directory.setText(my_dir)
def create_album(self):
current_dir = self.ui.lineEdit_Directory.toPlainText()
check1 = self.ui.checkBox_1.value()
check2 = self.ui.checkBox_2.value()
return current_dir, check1, check2
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MyApp()
window.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
我看过:
PyQt:QFileDialog.getExistingDirectory使用默认目录,用户独立
如您所见,自以下错误以来,我仍然没有添加最后一位,但我认为我需要研究一下:
首先没有错误。我相信ui会被立即加载,但是一旦我单击按钮之一,程序就会停止运行..我怎么了?我需要使用线程来选择目录吗?
未来的任何提示都将受到欢迎!
提前致谢!
我不喜欢回答我自己的问题的想法,但我想如果这样做可以为某人节省几个小时的研究,那还不错。
所以在这里我找到了一个解决方案,以及我的代码中可能的错误。
解:
import sys
from os.path import expanduser
from PyQt5.QtWidgets import QMainWindow, QApplication, QFileDialog
from PyQt5 import uic, QtGui, QtCore
Ui_MainWindow, QtBaseClass = uic.loadUiType("mainGui_3A.ui")
class MyApp(QMainWindow, Ui_MainWindow):
def __init__(self):
super(MyApp, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
logo_src = "appLogo.png"
self.setWindowIcon(QtGui.QIcon(logo_src))
self.ui.pushButton_Directory.clicked.connect(self.choose_directory)
self.ui.pushButton_CreateAlbum.clicked.connect(self.create_album)
self.ui.pushButton_Directory.setToolTip('Choose directory')
self.ui.checkBox_Quality.setToolTip('Include image quality assessment upon selection of representative photos')
self.ui.checkBox_Launch.setToolTip('Display output album when done')
def choose_directory(self):
print("Hello1")
input_dir = QFileDialog.getExistingDirectory(None, 'Select a folder:', expanduser("~"))
self.ui.lineEdit_Directory.setText(input_dir)
def create_album(self):
print("Hello2")
current_dir = self.ui.lineEdit_Directory.text()
if current_dir != "":
quality = self.ui.checkBox_Quality.isChecked()
launch = self.ui.checkBox_Launch.isChecked()
print(current_dir)
print(quality)
print(launch)
return 1
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MyApp()
window.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
我通过文本比较发现了可能的错误:
使用
my_dir = QtGui.QFileDialog.getExistingDirectory(
self,
"Open a folder",
expanduser("~"),
QtGui.QFileDialog.ShowDirsOnly
)
Run Code Online (Sandbox Code Playgroud)代替
input_dir = QFileDialog.getExistingDirectory(None, 'Select a folder:',
expanduser("~"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2899 次 |
| 最近记录: |