Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
消除python中的重复代码_Python_User Interface_Pyqt4 - Fatal编程技术网

消除python中的重复代码

消除python中的重复代码,python,user-interface,pyqt4,Python,User Interface,Pyqt4,我试图用PyQt4创建一个GUI,我最初使用QT设计器完成总体布局,然后修改代码。我注意到有很多重复的代码会被一个类或方法替换,但我不确定哪种更好,或者如何正确地实现这两种方法。下面是一个重复代码的示例(它是一个非常大的程序) 这些代码都在 from PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: def _fromUtf8(s):

我试图用PyQt4创建一个GUI,我最初使用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):
我最初的尝试是在Ui表单类中创建这样一个方法

def myQtlineEdit(self, name, form, sizePolicy):
        self.name = QtGui.QLineEdit(Form)
        self.name.setSizePolicy(sizePolicy)
        self.name.setText(_fromUtf8(""))
        self.name.setFrame(True)
        self.name.setAlignment(QtCore.Qt.AlignCenter)
        self.name.setReadOnly(True)
        self.name.setObjectName(_fromUtf8("%s" %name))

        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.name.sizePolicy().hasHeightForWidth())

self myQtlineEdit("ch2_R", form, sizePolicy)
它确实创建了我正在查找的文本字段,但是

self.gridLayout.addWidget(self.ch2_R, 4, 5, 1, 4)
会给我一个错误,说ch2\u R不存在


谢谢。

您应该这样做,而不是创建名为
ch2\u R
的属性,因为您总是将其分配给属性
self.name

def myQtlineEdit(self, name, form, sizePolicy):
    widget = QtGui.QLineEdit(Form)
    widget.setSizePolicy(sizePolicy)
    widget.setText(_fromUtf8(""))
    widget.setFrame(True)
    widget.setAlignment(QtCore.Qt.AlignCenter)
    widget.setReadOnly(True)
    widget.setObjectName(_fromUtf8("%s" %name))

    setattr(self, name, widget)

    sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed)
    sizePolicy.setHorizontalStretch(0)
    sizePolicy.setVerticalStretch(0)
    sizePolicy.setHeightForWidth(widget.sizePolicy().hasHeightForWidth())
def myQtlineEdit(self, name, form, sizePolicy):
    widget = QtGui.QLineEdit(Form)
    widget.setSizePolicy(sizePolicy)
    widget.setText(_fromUtf8(""))
    widget.setFrame(True)
    widget.setAlignment(QtCore.Qt.AlignCenter)
    widget.setReadOnly(True)
    widget.setObjectName(_fromUtf8("%s" %name))

    setattr(self, name, widget)

    sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed)
    sizePolicy.setHorizontalStretch(0)
    sizePolicy.setVerticalStretch(0)
    sizePolicy.setHeightForWidth(widget.sizePolicy().hasHeightForWidth())