2012-01-31 31 views
5

¿Cómo creo un widget desplegable, como QLabel desplegable, QPrensaCollector desplegable, etc.?Qt/PyQt: ¿Cómo creo un widget desplegable, como QLabel, QTextBrowser, etc.?

Por ejemplo, registro la información en un QTextBrowser, pero no quiero que ocupe espacio en la pantalla. Así que quiero poder hacer clic en el botón QTool y tener un menú desplegable desplazable QTextBrowser. (Un QComboBox también funcionaría, pero no puedo simplemente agregar cada evento como un elemento separado - Necesito que el texto se envuelva, no se omita. Por lo tanto, un QTextBrowser desplegable.)

O, por ejemplo, I desear un desplegable QLabel que contiene una imagen, etc ...

Respuesta

14

Crear una QWidgetAction para el widget desplegable, y agregarlo a la herramienta de botón menu:

from PyQt4 import QtGui, QtCore 

class Window(QtGui.QWidget): 
    def __init__(self): 
     QtGui.QWidget.__init__(self) 
     layout = QtGui.QHBoxLayout(self) 
     self.button = QtGui.QToolButton(self) 
     self.button.setPopupMode(QtGui.QToolButton.MenuButtonPopup) 
     self.button.setMenu(QtGui.QMenu(self.button)) 
     self.textBox = QtGui.QTextBrowser(self) 
     action = QtGui.QWidgetAction(self.button) 
     action.setDefaultWidget(self.textBox) 
     self.button.menu().addAction(action) 
     layout.addWidget(self.button) 

if __name__ == '__main__': 

    import sys 
    app = QtGui.QApplication(sys.argv) 
    window = Window() 
    window.resize(100, 60) 
    window.show() 
    sys.exit(app.exec_())