Я не знаю, является ли это ошибкой или я использую эту функцию неправильно.
Я хочу создать окно таблицы стилей MacOS, и я создал подкласс QFileDialog, чтобы установить WindowModalityи Parent.
Если я жду подтверждения от пользователя с помощью if diag.exec():
, я могу получить выбранные файлы, НО, окно листа полностью смещено (т.е. не появляется там, где должно)
![enter image description here](https://i.stack.imgur.com/SbpyA.png)
Если я вместо этого использую 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_())