pyqt5 - 如何从函数向 QComboBox 添加值
pyqt5 - How to add value to QComboBox fromfunction
我尝试使用 "activated.connect()" 方法从函数 "get_devices" 向 QComboBox(我的代码中的 deviceBox)添加项目,但是 QComboBox 是空的。我哪里弄错了?
#!/usr/bin/env python3
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox, QFileDialog
from PyQt5.QtCore import pyqtSignal, pyqtSlot
from mainwindow import *
import sys
import pyudev
class MainProg (QMainWindow, Ui_MainWindow):
file_open = pyqtSignal(str, str)
def __init__(self, window):
QMainWindow.__init__(self)
self.setupUi(window)
self.openisoButton.clicked.connect(self.openISO)
self.aboutButton.clicked.connect(self.about)
self.deviceBox.activated.connect(self.get_devices)
def get_devices(self):
devices = []
context = pyudev.Context()
for device in context.list_devices(subsystem='block', ID_BUS="usb"):
devices.append(str(device['DEVNAME']))
self.deviceBox.addItems(devices)
QCombBox
对象有一个名为 addItem
的方法,可以将项目附加到现有项目列表。
所以你需要修改最后一行的代码。
for device in devices:
self.deviceBox.addItem(device)
我尝试使用 "activated.connect()" 方法从函数 "get_devices" 向 QComboBox(我的代码中的 deviceBox)添加项目,但是 QComboBox 是空的。我哪里弄错了?
#!/usr/bin/env python3
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox, QFileDialog
from PyQt5.QtCore import pyqtSignal, pyqtSlot
from mainwindow import *
import sys
import pyudev
class MainProg (QMainWindow, Ui_MainWindow):
file_open = pyqtSignal(str, str)
def __init__(self, window):
QMainWindow.__init__(self)
self.setupUi(window)
self.openisoButton.clicked.connect(self.openISO)
self.aboutButton.clicked.connect(self.about)
self.deviceBox.activated.connect(self.get_devices)
def get_devices(self):
devices = []
context = pyudev.Context()
for device in context.list_devices(subsystem='block', ID_BUS="usb"):
devices.append(str(device['DEVNAME']))
self.deviceBox.addItems(devices)
QCombBox
对象有一个名为 addItem
的方法,可以将项目附加到现有项目列表。
所以你需要修改最后一行的代码。
for device in devices:
self.deviceBox.addItem(device)