如何在PyQt5中没有QGridLayout.addWidget的情况下动态添加小部件?

时间:2019-04-07 17:00:24

标签: python-3.x pyqt pyqt5 qpushbutton

我正在尝试制作一个具有搜索功能的程序,当单击搜索按钮时,它将显示一些按钮,这些按钮将显示不同的搜索结果。我知道这可能不是最有效的方法,但是对于我要解决的问题,这是必需的。一切正常,除了无法在需要时创建新的QPushButton之外。

我尝试使用QGridLayout.addWidget,但当然可以将其对齐到网格布局。我不想这样做,因为我想自定义QPushButton的位置,其大小等,这是我无法通过此方法完成的。我刚刚编写的一些简单代码就可以显示问题:

from PyQt5 import QtCore, QtGui, QtWidgets
import sys

class UI_Dialog(object):
    def addButtons(self):
        self.btn2 = QtWidgets.QPushButton(Dialog)         
        self.btn2.setGeometry(QtCore.QRect(115, 220, 101, 131))
        self.btn2.setObjectName("btn2")        
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(1300, 800)
        self.btn1 = QtWidgets.QPushButton(Dialog)
        self.btn1.setGeometry(QtCore.QRect(10, 80, 101, 131))
        self.btn1.setObjectName("btn1")
        self.btn1.clicked.connect(self.pushed)
        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def pushed(self):
        self.addButtons()
    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Example Program"))
        self.btn1.setText(_translate("Dialog", "Push Button"))

app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = UI_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())

这里有些事情可能没有意义,例如窗口大小,多功能调用或它是Dialog窗口而不是QMainWindow。但是,在实际程序的上下文中,他们只是忽略了这一点,我知道它的效率很低。我只希望将btn2以正确的尺寸显示在正确的位置。预先感谢!

0 个答案:

没有答案