Tôi đang cố gắng thực hiện trình phát âm thanh đơn giản, nhưng tôi muốn sử dụng hình ảnh (biểu tượng) làm nút bấm.cách mã nút Hình ảnh trong PyQt?
Trả lời
Tôi đã thấy rất nhiều người gặp vấn đề này và quyết định viết một ví dụ thích hợp về cách khắc phục. Bạn có thể tìm thấy nó ở đây: An example on how to make QLabel clickable Giải pháp trong bài đăng của tôi giải quyết vấn đề bằng cách mở rộng QLabel để nó phát ra tín hiệu được nhấp(). QLabel mở rộng trông giống như sau:
class ExtendedQLabel(QLabel):
def __init__(self, parent):
QLabel.__init__(self, parent)
def mouseReleaseEvent(self, ev):
self.emit(SIGNAL('clicked()'))
Tôi hy vọng điều này sẽ hữu ích!
Một cái gì đó như thế này, có thể?
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_()
có nó hoạt động, bu Tôi không muốn một hình ảnh bên trong nút, tôi muốn, một hình ảnh như thay thế một nút – Alquimista
Bạn có thể phân lớp QAbstractButton và tạo nút của riêng bạn. Dưới đây là một ví dụ đơn giản cơ bản:
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_())
Đó không phải là cách siêu dễ dàng, nhưng nó mang lại cho bạn nhiều quyền kiểm soát. Bạn có thể thêm pixmap thứ hai và vẽ nó chỉ khi con trỏ chuột di chuột qua nút. Bạn có thể thay đổi hành vi kéo dài hiện tại thành trung tâm. Bạn có thể làm cho nó có không phải là một hình chữ nhật và vân vân ...
Nút rằng những thay đổi hình ảnh trên di chuột và khi ép:
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)
cảm ơn, tôi sẽ đọc thêm abot subclassing QAbstractButton – Alquimista
Tôi thấy đây là lần đầu tiên 'true' giải pháp tôi đã tìm thấy. Rõ ràng và rực rỡ. –
Tôi rất mới với PySide/PyQt và tôi đã xem qua điều này, điều này rất hữu ích. Nhưng tôi không thể tìm ra cách thêm bản đồ thứ hai khi nút được nhấn hoặc khi chuột di chuyển. Nó sẽ có thể cho bạn để xây dựng trên đó? Cảm ơn. – oxtay
Một lựa chọn khác là sử dụng stylesheets. Một cái gì đó như:
from PyQt4 import QtCore, QtGui
import os
...
path = os.getcwd()
self.myButton.setStyleSheet("background-image: url(" + path + "/myImage.png);")
Bạn có thể sử dụng QToolButton với thiết lập thuộc tính autoraise true và ở đó bạn cũng có thể đặt hình ảnh của mình.
- 1. Tạo nút động trong PyQt
- 2. Cách tạo nút hình ảnh trong Android?
- 3. Nút Hình ảnh trong BlackBerry
- 4. Làm cách nào tôi có thể kéo hình ảnh trong nút hình ảnh thành toàn bộ vùng của nút ảnh?
- 5. PyQt: Làm cách nào để hiển thị hình ảnh đúng cách?
- 6. bộ hình ảnh như nút
- 7. hình ảnh nút thay đổi trong android
- 8. nút hình ảnh với html5
- 9. Nút PyQT được nhấp vào tên
- 10. Cách thêm văn bản dưới nút hình ảnh trong Android?
- 11. Cách kiểm tra hình ảnh nút trong Xcode
- 12. gọi chức năng khi nhấn nút - pyqt
- 13. PyQt Designer viết mã ở đâu?
- 14. hình ảnh cho AlertDialog nút
- 15. Hình ảnh tùy chỉnh nút hủy UISearchbar
- 16. Không thể cấu hình pyQT
- 17. cách đặt hình ảnh cho uitabbarcontroller trong mã ca cao
- 18. Cách mã hóa base64 hình ảnh trong javascript
- 19. Giải mã hình ảnh trong chuỗi nền?
- 20. Hình ảnh iOS quay trên nút bấm
- 21. Java: Hình ảnh làm nút chuyển đổi
- 22. Phương pháp hình ảnh nút cài đặt
- 23. 'Graying Out' một hình ảnh nút WPF?
- 24. Cách vẽ hình ảnh ở giữa nút Radio
- 25. Nút Gửi hình ảnh trong một Biểu mẫu
- 26. Qt: tạo "nút hình ảnh svg"
- 27. thiết kế bố trí như bên dưới hình ảnh với các nút hình ảnh trong android
- 28. Hình ảnh mã hóa Base64
- 29. Facebook, cách thay đổi hình ảnh nút như thế nào?
- 30. Sự khác biệt giữa nút hình ảnh và nút
Vấn đề với giải pháp này là sự kiện phát hành chuột không phải là nhấp chuột. Để có một cú click chuột phải xuống và lên trong cùng một widget. Nếu không, người dùng có thể đã bắt đầu nhấp vào một nơi khác, thay đổi ý định của họ và di chuyển chuột ra khỏi nút-họ-không-muốn-nhấp-và trên cái này. Sự ngạc nhiên! –