【发布时间】:2018-11-07 01:48:53
【问题描述】:
我不知道这是一个错误还是我没有正确使用该功能。
我想制作一个 MacOS 样式表窗口,并且我将 QFileDialog 子类化以设置 WindowModality 和 Parent。
如果我用if diag.exec(): 等待用户确认,我可以获得选定的文件,但是,工作表窗口完全放错了位置(即没有出现在它应该出现的位置)
如果我改为使用 if diag.open():,则工作表会按原样显示,但我似乎没有返回任何文件名或路径。
是我做错了什么,还是碰巧坏了?
示例代码:
from PyQt5.Qt import *
import sys
import time
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
self.centralwidget = QWidget(MainWindow)
self.pushButton = QPushButton(self.centralwidget)
self.pushButton.setText("CLICK ME")
MainWindow.setCentralWidget(self.centralwidget)
self.pushButton.clicked.connect(self.test)
def test(self):
diag = OpenSheet()
if diag.exec(): # Replace with diag.open() to prevent weird bug, but doesn't return any filenames now
fileNames = diag.selectedFiles()
print(fileNames)
class OpenSheet(QFileDialog):
def __init__(self):
super().__init__()
self.setWindowModality(True)
self.setParent(mainwindow)
self.setFileMode(self.ExistingFiles)
self.setAcceptMode(QFileDialog.AcceptOpen)
if __name__ == "__main__":
app = QApplication(sys.argv)
mainwindow = QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(mainwindow)
mainwindow.show()
sys.exit(app.exec_())
【问题讨论】:
标签: python macos qt pyqt pyqt5