【问题标题】:PYQT QpushButton with QcomboBox multi-slot connectPYQT QpushButton 与 QcomboBox 多槽连接
【发布时间】:2017-04-01 08:24:50
【问题描述】:

所以我开发了这个 GUI 来工作,但是我无法将我的 QcomboBox 连接到多个不同的插槽,具体取决于用户输入。本质上,我希望用户能够从 QcomboBox 中选择一个驱动器,然后按下 QpushButton 并自动定向到网络驱动器。

这几天我一直在摸索这个逻辑。我知道代码的第二部分应该是这样的(也许?):

def retranslateUi(Self, MainWindow):
    self.btnGo.clicked.connect(self.DriverSelectClicked)

def DriverSelectClicked(self):
    if self.comboBox1.currentIndex() == 0:
       os.startfile('C:/')
    if self.comboBox1.currentIndex() == 1:
       os.startfile('Z:/')     

【问题讨论】:

  • 您应该尝试将 clicked 信号更改为 currentIndexChanged

标签: python pyqt signals-slots qcombobox qpushbutton


【解决方案1】:

您应该直接从组合框中提取驱动器路径信息。除了设置组合框条目的文本,还可以设置数据

drives = ['C:\\', 'Z:\\']
for drive in drives:
    text = '[{}] Disk Drive'.format(drive)
    self.comboBox1.addItem(text, drive)

然后,当您处理点击时,您可以读取包含驱动器的数据字段并直接使用它

def DriverSelectClicked(self):
    drive = self.comboBox1.itemData(self.comboBox1.currentIndex())
    if drive:
       os.startfile(drive) 

【讨论】:

  • 非常感谢@Brendan Abel!这非常有效。
猜你喜欢
  • 1970-01-01
  • 2016-11-13
  • 2011-08-20
  • 2013-11-26
  • 2016-10-11
  • 2013-01-17
  • 1970-01-01
  • 2018-02-28
相关资源
最近更新 更多