【问题标题】:pyqt4 python QT globalpyqt4 python QT 全局
【发布时间】:2016-04-19 04:56:20
【问题描述】:

我写了非常简单的 python & Qt 代码。

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_Form(object):

    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(619, 501)
        self.pushButton = QtGui.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(60, 460, 98, 27))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.comboBox = QtGui.QComboBox(Form)
        self.comboBox.setGeometry(QtCore.QRect(20, 410, 78, 27))
        self.comboBox.setObjectName(_fromUtf8("comboBox"))
        self.comboBox.addItem(_fromUtf8(""))
        self.comboBox.addItem(_fromUtf8(""))
        self.comboBox.addItem(_fromUtf8(""))
        self.comboBox_2 = QtGui.QComboBox(Form)
        self.comboBox_2.setGeometry(QtCore.QRect(120, 410, 78, 27))
        self.comboBox_2.setObjectName(_fromUtf8("comboBox_2"))
        self.comboBox_2.addItem(_fromUtf8(""))
        self.comboBox_2.addItem(_fromUtf8(""))
        self.comboBox_2.addItem(_fromUtf8(""))
        self.label = QtGui.QLabel(Form)
        self.label.setGeometry(QtCore.QRect(20, 380, 81, 21))
        self.label.setObjectName(_fromUtf8("label"))
        self.label_2 = QtGui.QLabel(Form)
        self.label_2.setGeometry(QtCore.QRect(120, 380, 91, 21))
        self.label_2.setObjectName(_fromUtf8("label_2"))

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        Form.setWindowTitle(_translate("Form", "Form", None))
        self.pushButton.setText(_translate("Form", "BASLA", None))
        self.comboBox.setItemText(0, _translate("Form", "780", None))
        self.comboBox.setItemText(1, _translate("Form", "1350", None))
        self.comboBox.setItemText(2, _translate("Form", "1850", None))
        self.comboBox_2.setItemText(0, _translate("Form", "64", None))
        self.comboBox_2.setItemText(1, _translate("Form", "128", None))
        self.comboBox_2.setItemText(2, _translate("Form", "256", None))
        self.label.setText(_translate("Form", "USRP FRQ", None))
        self.label_2.setText(_translate("Form", "FFT BOYUTU", None))

    def deger(self):
        self.us=int(self.comboBox.currentText()) 
        #print "USRP Frekansı",self.us
        self.fft=int(self.comboBox_2.currentText()) 
        #print "FFT Boyutu",self.fft

    def basla(self):
        QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL("clicked()"), self.deger)


if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    Form = QtGui.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    ui.basla()
    Form.show()
    print ui.us   
    app.exec_()

当我运行程序时,我收到一条错误消息。 回溯(最近一次通话最后): 文件“./dene.py”,第 88 行,在 打印 ui.us AttributeError: 'Ui_Form' 对象没有属性 'us'。

我试过了:

def deger():
     global us
     us=int(comboBox.currentText())

此时我收到以下错误:

文件“./tt2.py”,第 71 行,在 打印我们 NameError:未定义全局名称“us”

此错误的原因可能是什么? 如何避免此错误? 请帮帮我

【问题讨论】:

    标签: python qt global


    【解决方案1】:

    首先,不要使用全局变量。

    关于你的问题。 您收到导入错误,因为在您的打印语句之前未分配 self.us(您没有调用方法“deger”)。 无论如何,你应该使用 PyQt ui 生成器创建 ui 文件,这样你就不会出现这样的错误。

    【讨论】:

      【解决方案2】:

      我对你的代码做了一些改动。现在它不再给出错误消息,并且当您单击按钮时您会打印组合框的内容。 如果您仍然有任何问题,请告诉我。我很乐意为您提供帮助。

      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_Form(object):
      
          def __init__(self):
              self.us = None
      
          def setupUi(self, Form):
              Form.setObjectName(_fromUtf8("Form"))
              Form.resize(619, 501)
              self.pushButton = QtGui.QPushButton(Form)
              self.pushButton.setGeometry(QtCore.QRect(60, 460, 98, 27))
              self.pushButton.setObjectName(_fromUtf8("pushButton"))
              self.comboBox = QtGui.QComboBox(Form)
              self.comboBox.setGeometry(QtCore.QRect(20, 410, 78, 27))
              self.comboBox.setObjectName(_fromUtf8("comboBox"))
              self.comboBox.addItem(_fromUtf8(""))
              self.comboBox.addItem(_fromUtf8(""))
              self.comboBox.addItem(_fromUtf8(""))
              self.comboBox_2 = QtGui.QComboBox(Form)
              self.comboBox_2.setGeometry(QtCore.QRect(120, 410, 78, 27))
              self.comboBox_2.setObjectName(_fromUtf8("comboBox_2"))
              self.comboBox_2.addItem(_fromUtf8(""))
              self.comboBox_2.addItem(_fromUtf8(""))
              self.comboBox_2.addItem(_fromUtf8(""))
              self.label = QtGui.QLabel(Form)
              self.label.setGeometry(QtCore.QRect(20, 380, 81, 21))
              self.label.setObjectName(_fromUtf8("label"))
              self.label_2 = QtGui.QLabel(Form)
              self.label_2.setGeometry(QtCore.QRect(120, 380, 91, 21))
              self.label_2.setObjectName(_fromUtf8("label_2"))
      
              self.retranslateUi(Form)
              QtCore.QMetaObject.connectSlotsByName(Form)
      
          def retranslateUi(self, Form):
              Form.setWindowTitle(_translate("Form", "Form", None))
              self.pushButton.setText(_translate("Form", "BASLA", None))
              self.pushButton.clicked.connect(self.buttonAction)
              self.comboBox.setItemText(0, _translate("Form", "780", None))
              self.comboBox.setItemText(1, _translate("Form", "1350", None))
              self.comboBox.setItemText(2, _translate("Form", "1850", None))
              self.comboBox_2.setItemText(0, _translate("Form", "64", None))
              self.comboBox_2.setItemText(1, _translate("Form", "128", None))
              self.comboBox_2.setItemText(2, _translate("Form", "256", None))
              self.label.setText(_translate("Form", "USRP FRQ", None))
              self.label_2.setText(_translate("Form", "FFT BOYUTU", None))
      
          def deger(self):
              self.us=int(self.comboBox.currentText()) 
              #print "USRP Frekansı",self.us
              self.fft=int(self.comboBox_2.currentText()) 
              #print "FFT Boyutu",self.fft
      
          def buttonAction(self):
              print("The button has been clicked")
              print("Text in comboBox 1: " + self.comboBox.currentText())
              print("Text in comboBox 2: " + self.comboBox_2.currentText())
      
      
      if __name__ == "__main__":
          import sys
          app = QtGui.QApplication(sys.argv)
          Form = QtGui.QWidget()
          ui = Ui_Form()
          ui.setupUi(Form)
          Form.show()
          print(ui.us)   
          app.exec_()
      

      【讨论】:

        猜你喜欢
        • 2014-01-02
        • 1970-01-01
        • 2016-05-24
        • 1970-01-01
        • 2014-07-18
        • 2016-06-04
        • 2012-07-25
        • 1970-01-01
        相关资源
        最近更新 更多