Estoy tratando de conectar la señal de clic() de un botón a mi propia función. El botón está en un widget que creé con QT Designer. Me carga el archivo .ui con QUiLoader así:Cómo implementar una señal/ranura definida en Qt Designer
class MyWidget(QtGui.QMainWindow):
def __init__(self, *args):
QtGui.QMainWindow.__init__(self, *args)
loader = QtUiTools.QUiLoader()
file = QtCore.QFile("pyside_ui_qtdesigner_form_test.ui")
file.open(QtCore.QFile.ReadOnly)
self.myWidget = loader.load(file, self)
file.close()
self.setCentralWidget(self.myWidget)
btn = self.myWidget.findChild(QtGui.QPushButton, "HelloWorldButton")
btn.clicked.connect(self.slot1)
def slot1(self):
print "Received"
¿Es esta la forma correcta de conectar a un botón de señal() hecho clic? Veo que puedo conectar señales y ranuras directamente en Qt Designer, pero ¿cómo me preparo y obtengo tales conexiones en el código? Pregunta lateral: El código anterior funciona, pero la ventana principal muestra el tamaño incorrecto. ¿Cómo me aseguro de que aparezca con el tamaño correcto? ¿Debo hacer esto con las restricciones mínimas de altura/ancho?
¡Gracias funciona bien! Repasar problemas de tamaño, establecer tamaños mínimos en Qt Designer ayudó. Pensé que tal vez haya una forma programática de garantizar que la ventana principal tenga el tamaño adecuado para que todos los widgets que están dentro sean visibles. – Sven
Re QUiLoader, sin motivo específico, aparte de eso, es simple. Para el enfoque 'pyuic4', tendré que investigar cómo hacer que Eclipse/PyDev inicie' pyuic4' automáticamente para archivos .ui. – Sven
@Sven. Vea mi respuesta actualizada sobre el cambio de tamaño: estoy bastante seguro de que es un problema de diseño. – ekhumoro