2016-05-02 6 views

Antwort

0

habe ich herausgefunden, wie man etwas ganz in der Nähe zu erreichen, was ich wollte einen QCheckBox mit:

Kein Hover: Delete button, no hover

Hover: Delete button, hover

ich dies durch Re tat -Verwenden einer QCheckBox wie folgt:

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_()) 

die

enter image description here

in Ergebnisse und wo die beiden Symbole (Schwebe- und kein Schweben) sind:

No hover icon

und

Hover icon

1

Der Code unten tut eine ähnliche Sache, nicht direkt auf den Rahmen der Gruppenrahmen zeichnen.

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() 
Verwandte Themen