我正在尝试非常简单的PySide2教程示例,并注意到样式和字体大小与“常规” Qt应用程序的样式非常不同。
我在Linux Mint 18中使用qt5ct,但是PySide2应用忽略了设置:
应用程序非常简单:
import sys
from PySide2.QtUiTools import QUiLoader
from PySide2.QtWidgets import QApplication
from PySide2.QtCore import QFile, Qt
if __name__ == "__main__":
app = QApplication(sys.argv)
file = QFile("mainwindow.ui")
file.open(QFile.ReadOnly)
loader = QUiLoader()
window = loader.load(file)
window.show()
sys.exit(app.exec_())
是否有任何指示其使用qt5ct设置的方法? Google没有提供任何有用的信息,因此任何提示都值得赞赏!
答案 0 :(得分:1)
为了使所有应用程序都使用qt5ct,必须将QT_QPA_PLATFORMTHEME = "qt5ct"
建立为会话或系统的变量,例如在~/.xprofile
中:
[ "$XDG_CURRENT_DESKTOP" = "KDE" ] || [ "$XDG_CURRENT_DESKTOP" = "GNOME" ] || export QT_QPA_PLATFORMTHEME="qt5ct"
如果只想在您的应用程序中建立,则必须通过命令行传递它:
python /path/of/your/script.py --platformtheme qt5ct
或者最好通过代码添加它:
import sys
from PySide2 import QtCore, QtWidgets, QtUiTools
if __name__ == "__main__":
sys.argv.extend(["--platformtheme", "qt5ct"])
app = QtWidgets.QApplication(sys.argv)
file = QtCore.QFile("mainwindow.ui")
file.open(QtCore.QFile.ReadOnly)
loader = QtUiTools.QUiLoader()
window = loader.load(file)
window.show()
sys.exit(app.exec_())
答案 1 :(得分:1)
几次在这里找到自己,最终找到了自己的解决方案。
请参见https://bugreports.qt.io/browse/PYSIDE-842
当通过pip安装pyside2但由系统安装Qt时,似乎会发生此问题(在我的情况下为Manjaro / Arch)。
这是使用pyside2的pip版本时得到的:
>>> from PySide2.QtWidgets import QStyleFactory
>>> print(QStyleFactory.keys())
[u'Windows', u'Fusion']
当使用arch linux打包的pyside2时,我得到:
>>> from PySide2.QtWidgets import QStyleFactory
>>> print(QStyleFactory.keys())
['Adwaita-Dark', 'Adwaita', 'Breeze', 'bb10dark', 'bb10bright', 'kvantum-dark', 'kvantum', 'cleanlooks', 'gtk2', 'cde', 'motif', 'plastique', 'qt5ct-style', 'Oxygen', 'Windows', 'Fusion']
使用系统附带的pyside2软件包(sudo pacman -S pyside2)为我解决了此问题。我的pyside2应用程序现在使用系统Qt主题。