- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试改变垂直对齐的 QProgressBar 的颜色
我在这里找到了如何通过 setStyleSheet
改变颜色的例子: Changing the color of a QProgressbar()
但是没有提到垂直对齐。请检查我的示例的屏幕截图:
第一个进度条是默认的,第二个和第三个是改变颜色的。但是文本没有正确对齐(我需要它作为第一个默认栏)。
我也尝试了 setTextDirection(QtGui.QProgressBar.TopToBottom)
但它没有帮助。
请指教
试用代码:
import sys
from PyQt4 import QtGui, QtCore
class Window(QtGui.QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.setGeometry(50, 50, 500, 300)
progress1 = QtGui.QProgressBar(self)
progress1.setGeometry(50, 50, 25, 150)
progress1.setOrientation(QtCore.Qt.Vertical)
progress1.setMaximum(0)
progress1.setMaximum(10)
progress1.setValue(4)
progress1.setFormat("myServer008-Load")
progress2 = QtGui.QProgressBar(self)
progress2.setGeometry(100, 50, 25, 150)
# adding style will stop rotating text 90 degrees clockwise
progress2.setStyleSheet("QProgressBar::chunk { background-color: red; }")
progress2.setOrientation(QtCore.Qt.Vertical)
progress2.setMaximum(0)
progress2.setMaximum(10)
progress2.setValue(4)
progress2.setFormat("myServer008-Load")
progress3 = QtGui.QProgressBar(self)
progress3.setGeometry(150, 50, 25, 150)
# centring text works, but still do no rotate it
progress3.setStyleSheet("QProgressBar { text-align: center; } QProgressBar::chunk { background-color: red; }")
progress3.setOrientation(QtCore.Qt.Vertical)
progress3.setMaximum(0)
progress3.setMaximum(10)
progress3.setValue(4)
progress3.setFormat("myServer008-Load")
app = QtGui.QApplication(sys.argv)
GUI = Window()
GUI.show()
sys.exit(app.exec_())
最佳答案
我找到了绘制自己的垂直进度条的解决方法。
也许有人也可以使用这个:
class MyBar(QtGui.QWidget):
""" Creates custom 'vertical progress bar'"""
def __init__(self, text, maximumValue, currentValue, parent=None):
super(MyBar, self).__init__(parent)
self.text = text
self.maximumValue = maximumValue
self.currentValue = currentValue
def setValue(self, currentValue):
if self.currentValue != currentValue:
self.currentValue = currentValue
self.repaint()
def paintEvent(self, event):
painter = QtGui.QPainter(self)
painter.translate(0, self.height() - 1)
painter.rotate(-90)
painter.setPen(QtGui.QColor(140, 138, 135))
painter.drawRoundedRect(QtCore.QRectF(0, 0, self.height() - 1, self.width() - 1), 4, 4)
painter.setPen(QtGui.QColor(201, 199, 197))
path = QtGui.QPainterPath()
path.addRoundedRect(QtCore.QRectF(1, 1, self.height() - 3, self.width() - 3), 3, 3)
painter.fillPath(path, QtGui.QColor(214, 212, 210))
painter.drawPath(path)
path = QtGui.QPainterPath()
path.addRoundedRect(QtCore.QRectF(1, 1, (self.height() - 3) * self.currentValue / self.maximumValue, self.width() - 3), 3, 3)
painter.fillPath(path, QtGui.QColor(255, 0, 0))
painter.drawPath(path)
painter.setPen(QtCore.Qt.black)
# print text centered
painter.drawText(5, self.width() / 2 + 5, self.text)
painter.end()
然后在问题代码中简单地添加:
progress4 = MyBar("myServer008-Load", 10, 4, self)
progress4.setGeometry(200, 50, 25, 150)
结果如下所示:
关于python - PyQt QProgressBar 垂直文本对齐问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43952242/
我正在尝试创建一个 QProgressBar 来指示执行一个我不知道执行前需要多长时间才能完成的操作。 现在我有以下内容 QProgressBar DLbar; DLbar.setMaximum(0)
我更新进度条的第一个天真是在我的循环中包含以下行,它正在执行处理,如下所示: while(data.hasMoreItems()) { doSomeProcessing(data.nextIt
我开发了自己的混合流密码,并且我使用 Qt 作为 GUI。最初我是在一个线程上写的,但它是一个流密码,在对大文件进行操作时使 GUI 功能失调。所以我将加密/解密转移到一个单独的 Qthread。另外
几天,也许几周,我一直在寻找我的应用程序中的内存泄漏。在找到这个之前,我没有找到它的位置: https://bugs.kde.org/show_bug.cgi?id=292217 检查了一切,我发现Q
我的任务很重。我创建了 QProgressBar 来显示该程序仍在工作,并使用 c++ std::thread 类在另一个线程中运行繁重的任务。但是 QProgressBar 不起作用,只有带有 QP
我想要一个垂直进度条,里面有垂直(从上到下)的文本。我想知道是否以及如何使用样式表来实现这一点。我无法更改整个应用程序的样式或完全更改小部件的样式(没有“应用可用的塑料样式解决方案”)。有人可以给我提
我从一个循环(进行一些计算)发出信号,触发位于主 GUI 上的进度条更新,循环结束后进度条更新为 100%(进程结束时进度条隐藏) ,但是有延迟,进度条保持在 100%,有时鼠标变为忙碌,只有几秒钟后
我有一些不寻常的问题:为了可视化打包进度,我考虑使用 qprogressbar 在一个栏中包含两个值 - 一个显示读取的字节,另一个显示写出的字节,这也给出了关于压缩比的想象。 QT4 可以吗? 另外
我正在 QT 中开发一个 GUI,它根据用户输入执行一些繁重的计算。我在一个函数中进行所有计算,比如 start_computation() ,因为 start_computation() 函数被称为
我正在尝试使用进度条 qt creator 作为电池图像,因此我需要能够控制进度条(使用一个名为 my_value 的变量,我将在之后更改该变量)。更准确地说,我希望能够从程序中设置进度条的值,并让它
我有一个日记程序,用户可以在其中创建任务,然后为其添加休息时间。每个 Task 对象都有一个 QTime start_time、QTime end_time 和 Break 的 vector .每个
我正在尝试改变垂直对齐的 QProgressBar 的颜色 我在这里找到了如何通过 setStyleSheet 改变颜色的例子: Changing the color of a QProgressba
我在状态栏中显示进度条,但它并没有很好地对齐。如果可能的话,我希望它显示为中心对齐,或者至少在左侧有一些边距,我正在附上快照。 我遇到的第二个问题是我希望它显示文本但没有显示文本。 _progress
我使用QProgressBar来显示下载操作的进度。我想在显示的百分比中添加一些文本,例如: 10%(下载速度kB/s) 有什么想法吗? 最佳答案 使 QProgressBar 文本可见。 QProg
我有一个 PyQT GUI 应用程序 progress_bar.py,带有一个进度条和一个带有 process_files() 函数的外部模块 worker.py它对文件列表执行一些例程,并使用 pe
我想通过使其变薄来自定义QProgressBar外观。有一个 setMaximumHeight() 方法可用。但不幸的是,进度条的高度被削减(或剪辑),使其看起来很奇怪。相反,我宁愿垂直挤压或缩放它。
我正在使用 QProgressBar并且已经弄清楚如何使用此过程从逻辑层中的特定类发送进度: 在 View 层类中设置连接。 在逻辑层类中创建信号信号。 修改逻辑层类,使其成为 QObject。 调用
我想知道是否有办法自定义进度条的颜色(QtGui.QProgressBar)。假设我们希望在条形图达到 100% 时将其变为绿色。 这是一个工作示例: import sys, time from Py
实际上,我在 QProgressBar 上设置了一个图像,并希望根据 QProgressBar 的选定部分更改图像的颜色。 我尝试用 QProgressBar 颜色覆盖我的图像,但这填充了图像,但由于
我是 Qt 的初学者,我正在尝试为我的应用程序的 gui 显示进程栏。我写了下面的代码 void my_app::progress() { int val=1; while(process.s
我是一名优秀的程序员,十分优秀!