【问题标题】:get the selected option from combo box从组合框中获取选定的选项
【发布时间】:2014-10-16 15:45:59
【问题描述】:

这是我使用 pyuic4 从 NetSim.ui 转换为 NetSim.py 的 python 代码。

组合框名称更改为 Codecs。

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'NetSim.ui'
#
# Created: Wed Oct 15 11:46:03 2014
#      by: PyQt4 UI code generator 4.10.1
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:
   _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
   def _fromUtf8(s):
      return s

try:
   _encoding = QtGui.QApplication.UnicodeUTF8
   def _translate(context, text, disambig):
      return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
   def _translate(context, text, disambig):
      return QtGui.QApplication.translate(context, text, disambig)

class Ui_NetSim(object):
   def setupUi(self, NetSim):
      NetSim.setObjectName(_fromUtf8("NetSim"))
      NetSim.resize(641, 564)
      self.Codecs = QtGui.QComboBox(NetSim)
      self.Codecs.setGeometry(QtCore.QRect(270, 90, 81, 29))
      self.Codecs.setObjectName(_fromUtf8("Codecs"))
      self.Codecs.addItem(_fromUtf8(""))
      self.Codecs.addItem(_fromUtf8(""))
      self.Codecs.addItem(_fromUtf8(""))
      self.Codecs.addItem(_fromUtf8(""))
      self.Codecs.addItem(_fromUtf8(""))
      self.Codecs.addItem(_fromUtf8(""))

   def retranslateUi(self, NetSim):

      NetSim.setWindowTitle(_translate("NetSim", "Dialog", None))
      self.Codecs.setItemText(0, _translate("NetSim", "Codecs", None))
      self.Codecs.setItemText(1, _translate("NetSim", "AMR-WB", None))
      self.Codecs.setItemText(2, _translate("NetSim", "AMR-WB+", None))
      self.Codecs.setItemText(3, _translate("NetSim", "VMR-WB", None))
      self.Codecs.setItemText(4, _translate("NetSim", "EVRC", None))
      self.Codecs.setItemText(5, _translate("NetSim", "EVRCb", No

我正在使用另一个 python 脚本来编写我自己的函数并将其连接到小部件。我想获取组合框的选定值并使用它(比如打印它),但它在我想获取 Codec 的选定值的行的代码中显示一个红十字,但我无法找到错误。错误是 : val = str(Ui_NetSim.Codecs.currentText()) AttributeError:类型对象“Ui_NetSim”没有属性“编解码器” 这里是:

import sys

from PyQt4 import QtCore, QtGui
from NetSim import Ui_NetSim
from PyQt4.Qt import QString
from __builtin__ import str

class AppGui(QtGui.QDialog,Ui_NetSim):

   def __init__(self):
      QtGui.QDialog.__init__(self)

      self.ui = Ui_NetSim()
      self.ui.setupUi(self)

      self.ui.Codecs.activated.connect(self.select_Codec)

    def select_Codec(self):

     val = str(Ui_NetSim.Codecs.currentText())
     print val


app = QtGui.QApplication(sys.argv)
window = AppGui()
ui = Ui_NetSim()
window.show()
sys.exit(app.exec_())

【问题讨论】:

  • 为什么不能只使用 self.ui.Codecs.currentText()?

标签: python qt combobox pyqt4


【解决方案1】:

您正试图访问类Ui_NetSim 的类变量Codecs。但是,CodecsUi_NetSim 的实例属性,因此只存在于类Ui_NetSim 的实例中。这个你应该通过self.ui.Codecs.currentText()访问它

所以你的方法变成了:

def select_Codec(self):
    val = str(self.ui.Codecs.currentText())
    print val

您的程序底部似乎还有一个额外的ui = Ui_NetSim()

window = AppGui()
ui = Ui_NetSim() # Delete this line, it is doing nothing!
window.show()

【讨论】:

  • 您的回答得到了很好的解释,以及我犯错的原因。非常感谢。 @three_pineapples
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-19
  • 1970-01-01
  • 2014-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多