【发布时间】:2020-03-22 02:42:08
【问题描述】:
我需要从文件的目录列表中选择出现在组合框中的默认文件。使用普通的组合框,很容易使用 .findText 找到您想要的值的索引,但这似乎不适用于 QFileSystemModel 组合框,可能是由于在目录列表可以之前不会填充选项列表的方式获得资源。
这是我尝试过的:
import sys
import collections
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QLabel, QGridLayout, QWidget, QComboBox
from PyQt5.QtCore import QSize, QRect
class ComboWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.setMinimumSize(QSize(640, 140))
self.setWindowTitle("Combobox example")
centralWidget = QWidget(self)
self.setCentralWidget(centralWidget)
# Create combobox and add items.
self.fsm = QtWidgets.QFileSystemModel()
self.fsm.setNameFilters(["*.txt"])
self.configComboBox = QtWidgets.QComboBox(self)
self.configComboBox.setGeometry(QRect(40, 40, 491, 31))
self.configComboBox.setObjectName(("comboBox"))
self.configComboBox.setModel(self.fsm)
self.fsm.setFilter(QtCore.QDir.NoDotAndDotDot | QtCore.QDir.Files)
# "text_files" is a subdir of current dir with files
# example1.txt, example2.txt, example3.txt
self.configComboBox.setRootModelIndex(self.fsm.setRootPath("text_files"))
# V V This section does not work V V
index = self.configComboBox.findText(MainConfig.settings["default_txt_file"])
self.configComboBox.setCurrentIndex(index)
class MainConfig:
settings = collections.OrderedDict()
@staticmethod
def createDefaultConfig(name):
MainConfig.settings["default_txt_file"] = "example3.txt"
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
mainWin = ComboWindow()
mainWin.show()
sys.exit( app.exec_() )
【问题讨论】:
标签: python pyqt5 qcombobox qfilesystemmodel