【问题标题】:pyqt5 - How to add value to QComboBox fromfunctionpyqt5 - 如何从函数中为 QComboBox 添加值
【发布时间】:2017-05-17 06:19:30
【问题描述】:

我尝试使用“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)

【问题讨论】:

    标签: python python-3.x pyqt5 qcombobox pyudev


    【解决方案1】:

    QCombBox 对象有一个名为 addItem 的方法,可以将项目附加到现有项目列表。

    所以你需要在最后一行修改你的代码。

    for device in devices: self.deviceBox.addItem(device)

    【讨论】:

    • 没有。 deviceBox 只是空的。
    • 抱歉,问题的关键在于,如果您选择其中的一个项目,activated 信号就会发送。但是您的项目列表始终为空。所以你需要连接另一个你可以用get_device激活的事件,比如another_push_button.clicked
    • 使用 QPushButton 可以正常工作,但是没有它如何让它工作?
    • QComboBox 没有点击信号,所以如果你想实现它,用一个空的项来初始化它。当您单击时,它会选择一个空项目并将激活信号发送到目标方法get_device,也许它可以工作。哦,记得删除第一个空项目。
    猜你喜欢
    • 2021-03-05
    • 2017-02-04
    • 2022-01-21
    • 1970-01-01
    • 2018-06-23
    • 2019-12-08
    • 2021-06-26
    • 2016-10-26
    • 2020-08-13
    相关资源
    最近更新 更多