【问题标题】:Window icon does not show窗口图标不显示
【发布时间】:2016-02-08 14:44:26
【问题描述】:

我学习这个教程http://zetcode.com/gui/pyqt5/firstprograms/ 和代码在这里。

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon


class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()


    def initUI(self):

        self.setGeometry(300, 300, 300, 220)
        self.setWindowTitle('Icon')
        self.setWindowIcon(QIcon('web.png'))        

        self.show()


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())  

我可以显示窗口图标吗?我使用 PyQt5、Python3.4 和 Linuxmint 17.2 cinnamon。

【问题讨论】:

    标签: python pyqt window icons pyqt5


    【解决方案1】:

    我不确定,你期望什么: windowicon 显示为 applicationIcon(例如,在 ubuntu gnome 上,请在后台查看我的代码)

    如果没有设置图标,windowIcon() 返回应用程序图标

    (QApplication::windowIcon()).

    http://doc.qt.io/qt-5/qwidget.html#windowIcon-prop

    在 ubuntu 上看起来像这样:

    所以我认为,代码工作正常

    【讨论】:

    • 哦,我认为那个图标是指窗口左上角的图标,但实际上那是状态栏图标。现在,我意识到窗口左上角的图标没有。谢谢!
    【解决方案2】:

    检查图标文件的放置位置。在您的情况下,它应该放在执行目录中。您可以通过以下更改检查执行目录:

    if __name__ == '__main__':
        import os
        print("Work dir:" + os.getcwd())
    
        app = QApplication(sys.argv)
        ex = Example()
        sys.exit(app.exec_())  
    

    【讨论】:

    • 感谢 Antoine,但我的工作目录与图像的目录相同。我认为这是另一个问题。
    【解决方案3】:

    试试PySide.QtGui.QApplication.setWindowIcon(icon)。像这样:

    if __name__ == '__main__':
        app = QApplication(sys.argv)
        app.setWindowIcon(QIcon('web.png'))
        ex = Example()
        sys.exit(app.exec_())  
    

    【讨论】:

      【解决方案4】:

      我遇到了完全相同的问题。

      首先要做的事情。实际上,QWidget 或 QMainWindow 类下没有 setWindowIcon() 方法。您应该尝试在应用程序级别设置 QIcon,如下所示。

      app = QApplication(sys.argv)
      app.setWindowIcon(QtGui.QIcon('home.png'))
      

      其次,使用此代码创建的图标不会反映在窗口的标题上,而是会反映为应用程序图标,如下图所示。主页.png

      Application icon in Mac not the Window Icon

      最后,路径无所谓,可以是绝对路径,也可以是相对路径,系统都会考虑。

      【讨论】:

      • “QWidget 或 QMainWindow 类下没有 setWindowIcon() 方法”。你确定吗? QWidget 的setWindowIcon() 怎么样(因此,QMainWindow,因为它继承自 QWidget)?然后,路径确实很重要:如果它是相对的,它必须是相对于应用程序路径的。
      猜你喜欢
      • 2019-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多