首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在QStyle中更改PyQt4属性?

如何在QStyle中更改PyQt4属性?
EN

Stack Overflow用户
提问于 2011-02-26 10:03:05
回答 1查看 4.6K关注 0票数 4

我想为一个QStyle::PM_TabBarTabHSpace应用程序更改PyQt属性。我读过用于QStyle的Qt文档,但我不知道如何在PyQt中正确设置它。

非工作代码:

代码语言:javascript
复制
style = QStyleFactory.create('Cleanlooks')
style.PM_TabBarTabHSpace = 5  # 5 pixels?
app.setStyle(style)

这段代码会运行,但它不会更改选项卡标签上的填充内容。我尝试使用样式表来更改选项卡填充,但这破坏了图形绘制,这样就不会绘制任何默认的外观感觉东西(我不想重新实现所有的ui绘图)。

我想我可能需要使用QProxyStyle,但是我找不到如何在PyQt4中使用它的任何例子。编辑: PyQt似乎没有QProxyStyle,因为from PyQt4.QtGui import QProxyStyle失败了。

有人可以张贴一个改变PM_TabBarTabHSpace值的例子吗?谢谢。

编辑这里是一个框架代码。更改PM_TabBarTabHSpace值不起任何作用。:(

代码语言:javascript
复制
from PyQt4.QtGui import (QApplication, QTabWidget, QWidget,
                         QStyle, QStyleFactory)

def myPixelMetric(self, option=None, widget=None):
    if option == QStyle.PM_TabBarTabHSpace:
        return 200 # pixels
    else:
        return QStyle.pixelMetric(option, widget)

style = QStyleFactory.create('Windows')
style.pixelMetric = myPixelMetric

app = QApplication('test -style Cleanlooks'.split())
# Override style
app.setStyle(style)

tab = QTabWidget()
tab.addTab(QWidget(), 'one')
tab.addTab(QWidget(), 'two')
tab.show()

app.exec_()
EN

回答 1

Stack Overflow用户

发布于 2014-03-18 13:26:34

QStyle.pixelMetric(.)是内建类方法。不能通过函数指向进行设置。因为它是用C代码编写的。您可以通过添加

代码语言:javascript
复制
def myPixelMetric(self, option=None, widget=None):
    print 'Debug, i am calling'
    ...

在myPixelmetric函数中。您需要对样式对象进行子类以实现这一点。下面是一个示例:

代码语言:javascript
复制
class MyStyle(QCommonStyle):
    def pixelMetric(self, QStyle_PixelMetric, QStyleOption_option=None, QWidget_widget=None):
        if QStyle_PixelMetric == QStyle.PM_TabBarTabHSpace:
            return 200
        else:
            return QCommonStyle.pixelMetric(self, QStyle_PixelMetric, QStyleOption_option, QWidget_widget)


app = QApplication('test -style Cleanlooks'.split())
app.setStyle(MyStyle())

这个代码片段可以工作,但它很难看。我更喜欢使用样式表而不是操作样式。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5126244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档