- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我还没有找到如何让我的 QMenu 中的图标变大的方法。我试图定义一个图标大小被放大的样式表。但它不起作用。这是我的代码:
menuStyleSheet = ("""
QMenu {
font-size: 18px;
color: black;
border: 2px solid black;
left: 20px;
background-color:qlineargradient(x1:0, y1:0, x2:0, y2:1, stop: 0 #cccccc, stop: 1 #ffffff);
}
QMenu::item {
padding: 2px 20px 2px 30px;
border: 1px solid transparent; /* reserve space for selection border */
spacing: 20px;
height: 60px;
}
QMenu::icon {
padding-left: 20px;
width: 50px; /* <- unfortunately, doesn't work */
height: 50px; /* <- unfortunately, doesn't work */
}
""")
#####################################################
# THE PYQT APPLICATION #
#####################################################
class GMainWindow(QMainWindow):
def __init__(self, title):
super(GMainWindow, self).__init__()
...
def setCustomMenuBar(self):
myMenuBar = self.menuBar()
global menuStyleSheet
myMenuBar.setStyleSheet(menuStyleSheet)
# Now add Menus and QActions to myMenuBar..
这段代码的结果如下:
我知道有一个关于类似主题的旧 StackOverflow 问题,但它假设一个人正在用 C++ 编写 Qt 应用程序。所以情况就不同了。这是链接:How to make Qt icon (in menu bar and tool bar) larger?
非常感谢任何帮助:-)
编辑:
以下是有关我的机器的一些详细信息:
最佳答案
经过长时间的寻找,我终于找到了解决方案。只需复制粘贴下面的代码,然后将其粘贴到 *.py
文件中。当然,您应该将图标的路径替换为本地计算机上的有效路径。只需提供完整路径(“C:\..”)即可 100% 确保 Qt 找到图标绘图。
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_())
那我是怎么解决的呢?好吧,显然你不能以通常的方式增加 QMenu 项目的图标大小——在样式表中定义大小。唯一的方法是提供一个新的 QStyle
,最好从现有的 QStyle
派生。我找到了有关如何在 C++ 中执行此操作的资源(请参阅 http://www.qtcentre.org/threads/21187-QMenu-always-displays-icons-aty-16x16-px),但没有对 PyQt 的解释。
经过长时间的试验和错误,我让它工作了:-)
显然有更多人在这种情况下挣扎:http://www.qtcentre.org/threads/61860-QMenu-Icon-Scale-in-PyQt
关于python - 如何使 QMenu 中的图标变大(PyQt)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39396707/
COW 不是奶牛,是 Copy-On-Write 的缩写,这是一种是复制但也不完全是复制的技术。 一般来说复制就是创建出完全相同的两份,两份是独立的: 但是,有的时候复制这件事没多大必要
我是一名优秀的程序员,十分优秀!