我可能遗漏了一些显而易见的东西,但下面的代码似乎没有在窗口标题栏中显示app_icon。app_icon.png是与main.py和ui_mainwindow.py相同文件夹中的24x24px文件。Qt文档似乎认为PySide6.QtGui.QIcon(fileName)是一种有效的方法,但也许我误解了它。除了这个问题之外,应用程序的其余部分都正常工作。
from PySide6.QtGui import QIcon, QScreen
from PySide6.QtWidgets import QApplication, QFileDialog, QMainWindow
from ui_mainwindow import Ui_MainWindow
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
# Change a few things
screenSize = QScreen.availableGeometry(QApplication.primaryScreen())
winXpos = ((screenSize.width() - self.width())/2)
winYpos = ((screenSize.height() - self.height())/2)
self.move(winXpos, winYpos)
self.setWindowTitle('App - Main Window')
self.setWindowIcon(QIcon('app_icon.png'))
...rest of the code...将其更改为以下内容,将导致错误
self.setWindowIcon(QIcon.addFile('app_icon.png'))
TypeError: descriptor 'addFile' for 'PySide6.QtGui.QIcon' objects doesn't apply to a 'str' object这是在linux上,使用Python3.8.10和PySide6。该表单与converted结合在一起,使用pyside6 6-UIC将.ui转换为.py。知道我哪里出问题了吗?
发布于 2021-12-04 19:40:39
我的猜测是,由于addFile不是静态函数,直接从QIcon类调用它将无法工作。相反,我认为您需要实例化一个QIcon对象并将addFile应用于它:
my_icon = QIcon()
my_icon.addFile('app_icon.png')
self.setWindowIcon(my_icon)作为建议,测试该文件是否存在(os.path.isfile),以及在Linux上您是否可以读取对它的访问。或者,尝试从文件路径创建一个QPixmap,并测试像素映射是否为null (None在Python中)。
(就像@musicamante建议的那样,它可能因为某种原因而找不到你的文件)。
另外,尝试
from PySide6.QtGui import QIcon, QPixmap
my_pixmap = QPixmap(":/app_icon.png")
my_icon = QIcon(my_pixmap)
self.setWindowIcon(my_icon)详情请参见Qt资源系统。
https://stackoverflow.com/questions/70228802
复制相似问题