pyqt - 如何从状态栏中的小部件中删除边框?

Posted

技术标签:

【中文标题】pyqt - 如何从状态栏中的小部件中删除边框?【英文标题】:pyqt - how to remove the boder from a widget in the statusbar? 【发布时间】:2011-07-12 15:55:29 【问题描述】:

我正在使用 QLabel 小部件在状态栏中向用户显示错误消息。使用以下代码可以正常工作;

self.statusbar = self.statusBar()

label = QtGui.QLabel("this is a test error message")
stylesheet = """
QLabel 
font-weight: bold;
color: #FF0000;

"""
label.setStyleSheet(stylesheet)
self.statusbar.addWidget(label)

唯一的问题是小部件周围有我无法摆脱的边框。这在功能上不是问题,因为该消息仍然可见,但它看起来确实很丑,我想摆脱它。我不知道它是从哪里来的。无论是我需要在状态栏还是小部件上设置的东西。我尝试修改状态栏和标签的样式表以添加“边框:0px”无济于事。我尝试将标签框架设置为label.setFrameShape(QtGui.QFrame.NoFrame),但似乎也不是。

有人知道如何摆脱它吗?

【问题讨论】:

【参考方案1】:

您可以使用样式表来做到这一点。你可能有这样的一行 应用程序(argc, argv);

在它下面,添加一个这样的: app.setStyleSheet("QStatusBar::item 边框:0px 纯黑色 ; ");

那些讨厌的盒子就会消失。

【讨论】:

如果你不使用样式表,你会怎么做?我正在加载一个预定义的调色板。像您一样设置样式表会删除所有其他调色板设置并搞砸一切。【参考方案2】:

尝试使用self.statusbar.showMessage('this is a test error message'),因为 QStatusBar 不是为显示标签而设计的。如果您需要比这更多的灵活性,您可以考虑继承 QStatusBar 并将其 paintEvent 函数更改为特殊情况标签。这些方法中的任何一种都比为您想要的每个标签设置样式表更容易维护,但无论如何,YMMV。

更多信息请查看the manual page for QStatusBar

【讨论】:

感谢您的回复。我一直在使用 showMessage 来处理各种类型的反馈,包括错误消息。错误只是不突出。所以查看文档,我添加了一个小部件,这样我就可以控制它的外观。文档状态 showMessage 用于临时消息,addWidget 用于显示正常和永久消息,所以这似乎是最好的方法。我喜欢继承 QStatusBar 的想法。这可能会给我所需的灵活性。我去看看。

以上是关于pyqt - 如何从状态栏中的小部件中删除边框?的主要内容,如果未能解决你的问题,请参考以下文章

PyQt 从任务栏中删除窗口

Wordpress:如何仅将 widget_title 过滤器应用于某个侧边栏中的小部件?

如何保存和恢复每个小部件实例唯一的小部件属性?

如何在不影响 Pyqt5 中的小部件的情况下将背景图像添加到主窗口

Pyqt QMdiSubWindow 使用可变数量的小部件调整大小

PyQt4:使用 QPushButton 小部件从 QList 小部件中删除项目