Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 2.7 在QGroupBox的上角放置一个按钮_Python 2.7_Pyqt_Pyside - Fatal编程技术网

Python 2.7 在QGroupBox的上角放置一个按钮

Python 2.7 在QGroupBox的上角放置一个按钮,python-2.7,pyqt,pyside,Python 2.7,Pyqt,Pyside,我有以下QGroupBox: 我想在右上角添加一个按钮,如下所示: 以便用户可以删除QGroupBox。这可能吗?如果没有,我可以使用哪些备选选项?下面的代码做了类似的事情,而不是直接在分组框的边框上绘制 import sys from PyQt4 import QtGui from PyQt4 import QtCore class GROUPBOX (QtGui.QWidget): def __init__(self): super(GROUPBOX, sel

我有以下QGroupBox:

我想在右上角添加一个按钮,如下所示:


以便用户可以删除QGroupBox。这可能吗?如果没有,我可以使用哪些备选选项?

下面的代码做了类似的事情,而不是直接在分组框的边框上绘制

import sys
from PyQt4 import QtGui
from PyQt4 import QtCore

class GROUPBOX (QtGui.QWidget):

    def __init__(self):
        super(GROUPBOX, self).__init__()        
        self.initUI()        

    def initUI(self):        
        self.pushButton = QtGui.QPushButton(self)
        self.pushButton.setGeometry(QtCore.QRect(480, 10, 50, 20))
        self.pushButton.setObjectName ('pushButton')        
        self.pushButton.setText ('Delete') 
        self.pushButton.clicked.connect (self.delete)
        self.createGroupBox ()       
        self.resize(586, 335)
        self.show()   

    def createGroupBox (self) :
        self.groupBox = QtGui.QGroupBox(self)
        self.groupBox.setGeometry(QtCore.QRect(25, 25, 500, 300))        
        self.groupBox.setObjectName ('groupBox')
        self.groupBox.setTitle ('Group Box') 
        self.groupBox.show () 

    def delete (self) :        
        currentGroupBox     = self.findChildren (QtGui.QGroupBox) 
        if currentGroupBox :
            for eachGroupBox in currentGroupBox :
                eachGroupBox.deleteLater()
            self.pushButton.setText ('Create')
        else :
            self.createGroupBox ()
            self.pushButton.setText ('Delete')             

def main():

    app = QtGui.QApplication(sys.argv)
    ex = GROUPBOX()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

我想出了如何使用QCheckBox实现非常接近我想要的东西:

无悬停:

悬停:

我这样做是通过重新设定QCheckBox的用途,如下所示:

import sys
from PySide import QtGui, QtCore

class DeleteButtonExample(QtGui.QWidget):

    def __init__(self):
        super(DeleteButtonExample, self).__init__()

        delete_gb = QtGui.QGroupBox('QGroupBox with Delete Button')
        group_box_vbl = QtGui.QVBoxLayout()
        group_box_vbl.setAlignment(QtCore.Qt.AlignTop)
        group_box_vbl.addSpacing(-14)
        delete_button_hbl = QtGui.QHBoxLayout()
        delete_button_cb = QtGui.QCheckBox()
        delete_button_cb.clicked.connect(self.delete_event)     
        delete_button_cb.setStyleSheet('QCheckBox::indicator:hover {image: url(del_btn_hover.png);}'
                                       'QCheckBox::indicator:!hover {image: url(del_btn_no_hover.png);}')
        delete_button_hbl.setAlignment(QtCore.Qt.AlignRight)
        delete_button_hbl.addWidget(delete_button_cb)
        delete_button_hbl.addSpacing(-13)
        group_box_vbl.addLayout(delete_button_hbl)
        delete_gb.setLayout(group_box_vbl)

        window_vbl = QtGui.QVBoxLayout()
        window_vbl.addWidget(delete_gb)
        self.setLayout(window_vbl)

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('QGroupBox with Delete Button')
        self.show()

    # @QtCore.Slot()
    def delete_event(self):
        msg = "Define the code to delete the QGroupBox here!"
        QtGui.QMessageBox().information(self, "Trying to delete the QGroupBox", msg)


if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    example = DeleteButtonExample()
    sys.exit(app.exec_())
导致

两个图标悬停和不悬停的位置是: