Im tratando de hacer reproductor de audio simple, pero quiero usar una imagen (icono) como un botón.cómo codificar un botón de imagen en PyQt?
Respuesta
he visto que mucha gente tiene este problema y decidió escribir un buen ejemplo de cómo solucionarlo. Puede encontrarlo aquí: An example on how to make QLabel clickable La solución en mi publicación resuelve el problema extendiendo QLabel para que emita la señal de clic(). El QLabel extendida es como la siguiente:
class ExtendedQLabel(QLabel):
def __init__(self, parent):
QLabel.__init__(self, parent)
def mouseReleaseEvent(self, ev):
self.emit(SIGNAL('clicked()'))
espero que esto ayude!
Algo como esto, tal vez?
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
app = QApplication(sys.argv)
widget = QWidget()
layout = QHBoxLayout()
widget.setLayout(layout)
button = QPushButton()
layout.addWidget(button)
icon = QIcon("image.png")
button.setIcon(icon)
widget.show()
app.exec_()
sí, funciona, pero no quiero una imagen dentro del botón, quiero, una imagen como reemplazo de un botón – Alquimista
Puede hacer una subclase QAbstractButton y hacer un botón propio. Aquí hay un ejemplo básico simple:
import sys
from PyQt4.QtGui import *
class PicButton(QAbstractButton):
def __init__(self, pixmap, parent=None):
super(PicButton, self).__init__(parent)
self.pixmap = pixmap
def paintEvent(self, event):
painter = QPainter(self)
painter.drawPixmap(event.rect(), self.pixmap)
def sizeHint(self):
return self.pixmap.size()
app = QApplication(sys.argv)
window = QWidget()
layout = QHBoxLayout(window)
button = PicButton(QPixmap("image.png"))
layout.addWidget(button)
window.show()
sys.exit(app.exec_())
No es una manera súper fácil, pero le da mucho control. Puede agregar un segundo mapa de píxeles y dibujarlo solo cuando el puntero del mouse pase sobre el botón. Puede cambiar el comportamiento actual de estiramiento al centrado. Se puede hacer para tener no una forma rectangular y así sucesivamente ...
botón que cambia las imágenes en vuelo estacionario ratón y cuando se pulsa:
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class PicButton(QAbstractButton):
def __init__(self, pixmap, pixmap_hover, pixmap_pressed, parent=None):
super(PicButton, self).__init__(parent)
self.pixmap = pixmap
self.pixmap_hover = pixmap_hover
self.pixmap_pressed = pixmap_pressed
self.pressed.connect(self.update)
self.released.connect(self.update)
def paintEvent(self, event):
pix = self.pixmap_hover if self.underMouse() else self.pixmap
if self.isDown():
pix = self.pixmap_pressed
painter = QPainter(self)
painter.drawPixmap(event.rect(), pix)
def enterEvent(self, event):
self.update()
def leaveEvent(self, event):
self.update()
def sizeHint(self):
return QSize(200, 200)
gracias, leeré más abot subclases QAbstractButton – Alquimista
Me parece que este es el primer 'verdadero' solución que he encontrado. Obvio y brillante. –
Soy muy nuevo en PySide/PyQt y me encontré con esto, que es muy útil. Pero no puedo encontrar la manera de agregar el segundo mapa de píxeles cuando se presiona el botón o cuando el mouse pasa. ¿Sería posible profundizar en eso? Gracias. – oxtay
Otra opción es el uso de hojas de estilo. Algo así como:
from PyQt4 import QtCore, QtGui
import os
...
path = os.getcwd()
self.myButton.setStyleSheet("background-image: url(" + path + "/myImage.png);")
Puede usar QToolButton con la propiedad set autoraise true y allí puede establecer su imagen también.
- 1. Cómo implementar un botón simple en PyQt
- 2. Crear botón dinámico en PyQt
- 3. Convertir PyQt en imagen PIL
- 4. Imagen en un botón
- 5. PyQt: ¿Cómo visualizo una imagen correctamente?
- 6. Cómo codificar datos de imagen dentro de un archivo HTML?
- 7. Imagen en botón GWT
- 8. Botón de imagen en BlackBerry
- 9. Configurar un botón de imagen en CSS - imagen: activa
- 10. ¿Cómo crear botón de imagen en Android?
- 11. pyqt: cómo eliminar un widget?
- 12. Arrastrando/moviendo un QPushButton en PyQt
- 13. Botón Enviar imagen dentro de un formulario
- 14. Highcharts: Agregar un botón de imagen personalizada
- 15. Enviar imagen de botón
- 16. Qt: creando un "botón de imagen svg"
- 17. Texto en un botón de imagen en C# asp.net 3.5
- 18. botón de imagen de Android
- 19. ¿Cómo podemos cambiar la imagen de un botón de widget?
- 20. Diálogo PyQt - ¿Cómo hacer que se cierre después de presionar un botón?
- 21. Diferencia entre botón de imagen y botón
- 22. ¿Cómo puedo codificar un monitor en C?
- 23. Botón WPF con imagen
- 24. Creando un botón de imagen en la aplicación .NET Winforms
- 25. Cambiar la imagen de un botón de menú en CMFCToolbar
- 26. Exportar gráfico como imagen - con un clic en un botón
- 27. imagen definida como botón
- 28. cómo codificar en url en android?
- 29. cómo configurar un oyente onclick para un botón de imagen en un diálogo de alerta
- 30. botón de imagen con html5
El problema con esta solución es que un evento de lanzamiento de mouse no es un clic. Para hacer clic, el mouse debe subir y bajar dentro del mismo widget. De lo contrario, el usuario puede haber comenzado a hacer clic en otro lugar, cambiar de opinión y alejar el mouse del botón-no-quieren-hacer clic y sobre este. ¡Sorpresa! –