【问题标题】:Enumerating serial port list in menu tab - python [duplicate]在菜单选项卡中枚举串行端口列表 - python [重复]
【发布时间】:2015-08-17 19:03:16
【问题描述】:

如何从qtmenuBar()获取子菜单中的串口列表

Select Port| debug | help
  |           
list comports -com1
               com2
               com3 

我的部分代码

def Menu(self, event):  
    menubar = self.menuBar()
    fileMenu = menubar.addMenu('&Select Port')
    fileMenu.addAction(self.conn2)

def createActions(self):
    self.conn2 = QtGui.QAction(QtGui.QIcon('./some_image.png'),"&Connect", self,
                                  statusTip="Sellect ur com port", triggered=self.connect)

我需要在“选择端口”选项卡的子菜单中获取可用的 com 端口列表,或者打开一个列出串行端口的新对话框

【问题讨论】:

    标签: python qt python-2.7 pyqt4


    【解决方案1】:

    基本上遍历可用端口列表并将它们添加为一种单选按钮可检查操作或QComboBox。然后,当一个被选中时,更改您的 self.portName 以反映新的。

    在纯 Qt 中执行此操作的示例在 Terminal Qt Serial Port 示例下,在 SettingsDialog 下。

    http://doc.qt.io/qt-5/qtserialport-terminal-settingsdialog-cpp.html

    void SettingsDialog::fillPortsInfo()
    {
        ui->serialPortInfoListBox->clear();
        static const QString blankString = QObject::tr("N/A");
        QString description;
        QString manufacturer;
        QString serialNumber;
        foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {
            QStringList list;
            description = info.description();
            manufacturer = info.manufacturer();
            serialNumber = info.serialNumber();
            list << info.portName()
                 << (!description.isEmpty() ? description : blankString)
                 << (!manufacturer.isEmpty() ? manufacturer : blankString)
                 << (!serialNumber.isEmpty() ? serialNumber : blankString)
                 << info.systemLocation()
                 << (info.vendorIdentifier() ? QString::number(info.vendorIdentifier(), 16) : blankString)
                 << (info.productIdentifier() ? QString::number(info.productIdentifier(), 16) : blankString);
    
            ui->serialPortInfoListBox->addItem(list.first(), list);
        }
    }
    

    看起来PyQt 没有QtSerialPort 库(可能是因为pySerial 和类似的库已经可用)。

    希望对您有所帮助。

    【讨论】:

    • PyQt5 有 QtSerialPort(从 5.1 版开始)。
    • 很高兴知道。谢谢你让我诚实。
    猜你喜欢
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 2022-01-23
    • 2010-11-26
    • 1970-01-01
    相关资源
    最近更新 更多