gpt4 book ai didi

python - 如何为 PyQt 安装新的 QStyle?

转载 作者:行者123 更新时间:2023-11-28 22:35:28 25 4
gpt4 key购买 nike

我正在用 PyQt4 编写 GUI(并迁移到 PyQt5)。这就是我启动 GUI 的方式:

if __name__== '__main__':
app = QApplication(sys.argv)
QApplication.setStyle(QStyleFactory.create('Fusion')) # <- Choose the style
myGUI = MyMainWindow("First GUI")
app.exec_()

PyQt4 中的默认样式:

显然,PyQt4 具有以下样式:

  • ' window '
  • 'WindowsXP'
  • 'WindowsVista'
  • '主题'
  • 'CDE'
  • '塑料'
  • 'Cleanlooks'

PyQt5 中的默认样式:

PyQt5 有以下样式:

  • ' window '
  • 'WindowsXP'
  • 'WindowsVista'
  • '融合'

自定义样式?

这些样式都没有对 HiDpi 显示器(4k 等)的适当支持。例如,滚动条太小(参见这篇文章:How to resize the scrollbar from a QTextEdit in PyQt?)。我什至没有提到那些视力不佳的人的问题..

您是否知道一种为 4k 显示器或有视力问题的人提供良好支持的风格(最好是开源的)?

如果是这样,如何下载并安装这种风格?

非常感谢。

最佳答案

我通过另一个问题得到了答案(或者说是解决方法): How to make Icon in QMenu larger (PyQt)?

创建新QStyle 的最直接方法是从现有的派生它。 PyQt 为此提供了 QProxyStyle 类。下面是我在 How to make Icon in QMenu larger (PyQt)? 中也给出的示例问题。在此示例中,创建了自定义 QStyle(源自“Fusion”样式),自定义样式为 QMenu 提供了非常大的图标。

import sys
import os
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *

# Create a custom "QProxyStyle" to enlarge the QMenu icons
#-----------------------------------------------------------
class MyProxyStyle(QProxyStyle):
pass
def pixelMetric(self, QStyle_PixelMetric, option=None, widget=None):

if QStyle_PixelMetric == QStyle.PM_SmallIconSize:
return 40
else:
return QProxyStyle.pixelMetric(self, QStyle_PixelMetric, option, widget)


# This is the main window class (with a simple QMenu implemented)
# ------------------------------------------------------------------
class TestWindow(QMainWindow):
def __init__(self):
super(TestWindow, self).__init__()

# 1. Set basic geometry and color.
self.setGeometry(100, 100, 400, 400)
self.setWindowTitle('Hello World')
palette = QPalette()
palette.setColor(QPalette.Window, QColor(200, 200, 200))
self.setPalette(palette)

# 2. Create the central frame.
self.centralFrame = QFrame()
self.centralFrame.setFrameShape(QFrame.NoFrame)
self.setCentralWidget(self.centralFrame)

# 3. Create a menu bar.
myMenuBar = self.menuBar()
fileMenu = myMenuBar.addMenu("&File")

testMenuItem = QAction(QIcon("C:\\my\\path\\myFig.png"), "&Test", self)
testMenuItem.setStatusTip("Test for icon size")
testMenuItem.triggered.connect(lambda: print("Menu item has been clicked!"))

fileMenu.addAction(testMenuItem)

# 4. Show the window.
self.show()

# Start your Qt application based on the new style
#---------------------------------------------------
if __name__== '__main__':
app = QApplication(sys.argv)
myStyle = MyProxyStyle('Fusion') # The proxy style should be based on an existing style,
# like 'Windows', 'Motif', 'Plastique', 'Fusion', ...
app.setStyle(myStyle)

myGUI = TestWindow()

sys.exit(app.exec_())

只需复制粘贴代码片段,然后将其粘贴到 *.py 文件中。当然,您应该将图标的路径替换为本地计算机上的有效路径。只需提供完整路径(“C:..”)即可 100% 确保 Qt 找到图标绘图。

尝试一下,您应该会看到以下窗口:

enter image description here

关于python - 如何为 PyQt 安装新的 QStyle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38154702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com