我正在学习使用 PyQt5 并想添加一个依赖的 QComboBox。 Combobox 的项目应该是目录中文件的列表。 函数 get_files() 读取目录中的文件并将它们作为列表返回。
但是,如果我在调试模式下运行脚本,QCombobox 只会显示这些项目。 为什么会这样?
代码如下:
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMessageBox
import time
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(700, 681)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
MainWindow.setCentralWidget(self.centralwidget)
self.B_SOFT = QtWidgets.QComboBox(self.centralwidget)
self.B_SOFT.setGeometry(QtCore.QRect(130, 150, 360, 50))
self.B_SOFT.setObjectName("B_SOFT")
xlsx,SOFTS = get_files()
[self.B_SOFT.addItem(x) for x in SOFTS]
def get_files():
import os; import numpy as np
entries = os.listdir()
msk = ['.xls' in x for x in entries]
xlsx = [x for i,x in enumerate(entries) if msk[i]]
names = [x.replace('EPB_SOFTWARE__','').replace('.xlsx','') for x in xlsx]
return xlsx,names
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())