簡體   English   中英

帶有圖像的 Qlabel 使用 QPixmap

[英]Qlabel with image using QPixmap

我想在 Qwidget 中包含一個 QToolbar,但我發現我只能在 QMainWindow 中創建一個 QToolbar。 因此,我想創建一個帶有箭頭圖標的 Qlabel。 我下載了一個透明背景圖像(我想)。 但是,在代碼中,圖像並不像我預期的那樣真正透明,它看起來很難看。 有沒有辦法只顯示沒有背景的箭頭。 下面是一個示例代碼

import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *


class App(QMainWindow):

    def __init__(self):
        super().__init__()
        self.title = 'test'
        self.left = 0
        self.top = 0
        self.width = 300
        self.height = 500
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        self.table_widget = MyTableWidget(self)
        self.setCentralWidget(self.table_widget)

        self.show()

class MyTableWidget(QWidget):

    def __init__(self, parent):
        super(QWidget, self).__init__(parent)
        self.layout = QVBoxLayout(self)

        # Create first tab
        label3 = QLabel()
        pixmap = QPixmap("index2.png")
        smaller_pixmap = pixmap.scaled(32, 32, Qt.KeepAspectRatio, Qt.FastTransformation)
        label3.setPixmap(smaller_pixmap)        
        label3.mouseReleaseEvent = self.on_click

        self.layout.addWidget(label3)
        self.setLayout(self.layout)

    @pyqtSlot()
    def on_click(self, event):
        print('yes')



if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())

您得到一個“丑陋”的圖像,因為該圖像具有部分透明的線條。 我增加了 alpha 閾值以更好地顯示它們:

已更改 alpha 的圖像

這些線條是圖像的一部分,Qt 無法“猜測”圖像的哪些部分對您“重要”與否。
基本上沒有簡單的方法可以通過代碼刪除它們,即使你成功了,結果也會很丑陋(圖像邊界需要一些部分透明以保持它們的平滑)並且不值得付出努力。

只需尋找不同的圖像,或通過將其剪切到箭頭邊框進行編輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM