在PyQt4中自定义WM_NAME和WM_CLASS(如xprop所示)

stu*_*ent 7 python pyqt4

我怎么可以自定义字符串WM_NAME和WM_CLASS一个的PyQt4程序如图xprop?

考虑例如:

from PyQt4 import QtGui, QtCore
import sys

if __name__ == '__main__':

    app = QtGui.QApplication(sys.argv)
    app.setStyle("plastique")


    listView = QtGui.QListView()    
    listView.show()

    combobox = QtGui.QComboBox()
    combobox.show()    

    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

如果我xprop_test.py通过python xprop_test.py并xprop为ListView或ComboBox 调用linux工具来运行它(文件被调用),它显示

WM_NAME(STRING) = "xprop_test.py"
Run Code Online (Sandbox Code Playgroud)

和

WM_CLASS(STRING) = "xprop_test.py", "Xprop_test.py"
Run Code Online (Sandbox Code Playgroud)

如何设置字符串WM_NAME和WM_CLASS另一个自定义值(与文件名不同)?

如何为整个程序设置它?如何针对每个GUI元素调整它?

ekh*_*oro 5

该WM_NAME字符串只是标题栏标题,可以这样设置:

listView.setWindowTitle('listview')
Run Code Online (Sandbox Code Playgroud)

给予:

WM_NAME(STRING) = "listView"
Run Code Online (Sandbox Code Playgroud)

更难WM_CLASS受到影响。默认情况下,它是从 构造的argv[0],并且似乎没有办法使用 Qt API 以编程方式更改它。-name但是,可以通过使用如下选项运行程序来更改字符串的第一部分:

python xprop_test.py -name FooBar
Run Code Online (Sandbox Code Playgroud)

给予:

WM_CLASS(STRING) = "FooBar", "Xprop_test.py"
Run Code Online (Sandbox Code Playgroud)