qt - example - Reducir un ancho de QPushButton al mínimo
qpushbutton pyqt5 (2)
Esto parece algo tan simple, pero parece que no puedo resolverlo. ¿Cómo hago para que el botón tenga el ancho mínimo? Se sigue expandiendo al ancho del diseño en el que lo puse. En el siguiente ejemplo, el ancho de QPushButton termina igual que el QLabel:
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
class MyWindow(QWidget):
def __init__(self,parent = None):
QWidget.__init__(self,parent)
layout = QVBoxLayout()
layout.addWidget(QLabel(''this is a really, really long label that goes on and on''))
layout.addWidget(QPushButton(''short button''))
self.setLayout(layout)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
Consulte http://qt-project.org/doc/qt-4.8/qwidget.html#sizePolicy-prop y http://qt-project.org/doc/qt-4.8/qsizepolicy.html#Policy-enum para obtener más información. sobre cómo controlar el tamaño de los widgets en un diseño dinámico.
Si no obtiene resultados satisfactorios cambiando solo la SizePolicy (debería), también podría consultar a estos chicos agradables: http://qt-project.org/doc/qt-4.8/qspaceritem.html
setMaximumWidth me funciona
from PyQt4 import QtGui
class Window(QtGui.QWidget):
def __init__(self):
super(Window, self).__init__()
layout = QtGui.QHBoxLayout()
texts = [":)",
"&Short",
"&Longer",
"&Different && text",
"More && text",
"Even longer button text", ]
for text in texts:
btn = QtGui.QPushButton(text)
double = text.count(''&&'')
text = text.replace(''&'', '''') + (''&'' * double)
width = btn.fontMetrics().boundingRect(text).width() + 7
btn.setMaximumWidth(width)
layout.addWidget(btn)
self.setLayout(layout)
if __name__ == ''__main__'':
import sys
app = QtGui.QApplication(sys.argv)
mainWin = Window()
mainWin.show()
sys.exit(app.exec_())