繁体   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