2012-04-28 58 views

回答

4

沒有,但它是非常容易實現的。這是一個非常基本的例子。您可以使用更多的功能擴展它:

enter image description here

from PyQt4 import QtGui 
import sys 

class ExpanderWidget(QtGui.QWidget): 
    def __init__(self, text, widget, parent=None): 
     super(ExpanderWidget, self).__init__(parent) 

     self.layout = QtGui.QVBoxLayout() 

     # better use your own icons 
     # these are kind of ugly :) 
     style = QtGui.QCommonStyle() 
     self.rightArrow = style.standardIcon(QtGui.QStyle.SP_ArrowRight) 
     self.downArrow = style.standardIcon(QtGui.QStyle.SP_ArrowDown) 

     self.toggle = QtGui.QPushButton(self.downArrow, text) 
     self.toggle.clicked.connect(self.toggleWidget) 

     self.widget = widget 

     self.layout.addWidget(self.toggle) 
     self.layout.addWidget(self.widget) 
     self.setLayout(self.layout) 

    def toggleWidget(self): 
     if self.widget.isVisible(): 
      self.toggle.setIcon(self.rightArrow) 
      self.widget.setVisible(False) 
     else: 
      self.toggle.setIcon(self.downArrow) 
      self.widget.setVisible(True) 



app = QtGui.QApplication(sys.argv) 

secretWidget = QtGui.QLabel('I am a secret widget. I can be hidden!') 

expander = ExpanderWidget('I hide a widget', secretWidget) 
expander.show() 

sys.exit(app.exec_())