Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.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 自定义按钮PyQT4_Python_Qt_Pyqt_Qt4_Pyqt4 - Fatal编程技术网

Python 自定义按钮PyQT4

Python 自定义按钮PyQT4,python,qt,pyqt,qt4,pyqt4,Python,Qt,Pyqt,Qt4,Pyqt4,我在显示我使用Python 2.7从PyQt4中的类创建的按钮时遇到问题。我的项目有80个按钮,都需要拖放功能。我创建了一个button类,允许这样做,但我不确定如何在Ui\u表单中显示它 我不认为我可以使用布局管理器,因为我想要一个背景图像,所以我假设我需要使用Ui\u-Form的setupUi函数中的Form参数从button类创建按钮,但我对如何创建按钮有把握 下面是一个只有两个按钮(和一个屏幕截图)的脚本示例——一个是从我的类调用的,另一个是QT Designer留下的。按钮btn_a1

我在显示我使用Python 2.7从PyQt4中的类创建的按钮时遇到问题。我的项目有80个按钮,都需要拖放功能。我创建了一个button类,允许这样做,但我不确定如何在
Ui\u表单中显示它

我不认为我可以使用布局管理器,因为我想要一个背景图像,所以我假设我需要使用
Ui\u-Form
setupUi
函数中的
Form
参数从button类创建按钮,但我对如何创建按钮有把握

下面是一个只有两个按钮(和一个屏幕截图)的脚本示例——一个是从我的类调用的,另一个是QT Designer留下的。按钮
btn_a1
应该在
btn_a2
左侧可见,但不可见(因为不知道如何正确调用它)。我已经删除了按钮标签和功能的代码,以便于使用

import sys
from PyQt4 import QtCore, QtGui

class Ui_Form(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.setupUi(self)

    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(591, 591)
        self.Background = QtGui.QLabel(Form)
        self.Background.setGeometry(QtCore.QRect(0, 0, 631, 591))
        self.Background.setPixmap(QtGui.QPixmap("Python/LP_Proj/LP_Background.png"))
        self.Background.setObjectName("Background")

        self.btn_a1 = Button(Form)

        self.btn_a2 = QtGui.QPushButton(Form)
        self.btn_a2.setGeometry(QtCore.QRect(90, 40, 41, 41))
        self.btn_a2.setObjectName("btn_a2")

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

    def retranslateUi(self, Form):
        Form.setWindowTitle(QtGui.QApplication.translate("Form", "Launchpad Control", None, QtGui.QApplication.UnicodeUTF8))

class Button(QtGui.QPushButton):
    def __init__(self, Form):
        super(Button, self).__init__()
        self.setAcceptDrops(True)

        self.setGeometry(QtCore.QRect(30, 40, 41, 41))
        self.setObjectName("btn_a1")

if __name__=='__main__':
    app = QtGui.QApplication(sys.argv)
    ex = Ui_Form()
    ex.show()
    sys.exit(app.exec_())

您的
按钮需要稍加修改
类:

def __init__(self, text='', parent=None):
    super(Button, self).__init__('Text', parent=parent)
    ...
然后在
Ui\u表单中的
setupUi
方法中更改

self.btn_a1 = Button(Form)

用户界面现在如下所示:


非常感谢,我在这件事上坚持了好几个小时,我想我从来没有想过要这么做!
self.btn_a1 = Button('Text', self)