Python 使用QPixmap的带图像的Qlabel
我想在Qwidget中包含一个QToolbar,但我发现我只能在QMainWindow中创建一个QToolbar。因此,我想创建一个带有箭头图标的Qlabel。我下载了一个(我想)。但是,在代码中,图像并不像我预期的那样透明,看起来很难看。有没有办法只显示箭头而不显示背景。下面是一个示例代码Python 使用QPixmap的带图像的Qlabel,python,pyqt5,Python,Pyqt5,我想在Qwidget中包含一个QToolbar,但我发现我只能在QMainWindow中创建一个QToolbar。因此,我想创建一个带有箭头图标的Qlabel。我下载了一个(我想)。但是,在代码中,图像并不像我预期的那样透明,看起来很难看。有没有办法只显示箭头而不显示背景。下面是一个示例代码 import sys from PyQt5.QtGui import * from PyQt5.QtWidgets import * from PyQt5.QtCore import * class A
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阈值以更好地显示它们:
这些线条是图像的一部分,Qt无法“猜测”图像的哪些部分对您“重要”或“不重要”。从根本上讲,没有简单的方法可以通过代码删除它们,即使你成功了,结果也会很难看(图像边缘需要部分透明以保持平滑),这不值得付出努力
只需查找其他图像,或通过将其剪切到箭头边框进行编辑。要帮助他人解决您的问题,请包含您下载的确切图像,而不是谷歌搜索的链接。另外,如果你不仅发布箭头的图像,还发布一个屏幕截图来展示它在实现时的外观,也许会有所帮助。谢谢你的评论,这是我的第一篇帖子。下次我会说得更具体些。很乐意帮忙,这就是这个社区的目的;)由于您是新会员,在发布问题之前先签出可能会有所帮助,直到您习惯了所需的信息:)这些行是因为图标不是免费的。如果你买了它们,它们就没有生产线了。尝试移除它们可能不是一个好主意。如果您不打算购买这些图标,我建议您使用免费网站(如),这样您就可以搜索具有非限制性许可证的图标。非常感谢您的支持。这真的很有帮助