2015-08-17 19 views
0

我怎样才能串行端口列表中的子菜单与qt menuBar()枚举菜单标签串行端口列表 - 蟒蛇

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端口列表,或打开一个新的带有串行端口的对话框

回答

0

基本上遍历可用端口列表并添加它们是一种单选按钮可检查的操作或作为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); 
    } 
} 

它看起来并不像PyQtQtSerialPort库(大概是因为pySerial和类似的库都已经可用)。

希望有所帮助。

+0

PyQt5有QtSerialPort(从版本5.1开始)。 – ekhumoro

+0

很高兴知道。谢谢你让我诚实。 – phyatt