如果我想从逻辑层上的循环更新视图层上的QProgressBar(例如每次迭代将更新进度条),那么正确的方法是什么?
谢谢
好吧,我有一个QProgressBar,我显示下载进度,但我想设置它显示下载速度的百分比,将其保留为:
百分比%(downloadspeed KB/s)
任何的想法?
我正在运行ubuntu 11.04.这就是我的进度条的样子:
我在批处理窗口中显示进度条(每批项目一个),并希望将它们用作状态指示器(绿色表示一切顺利,红色表示错误,......).
我已经尝试了几个建议,包括对这个几乎相同的问题所做的建议.不幸的是,我无法使它工作,关于定制QProgressBars 的文档对我也没有帮助,所以我非常感谢任何关于我做错的建议.
我按照建议将QProgressBar子类化,并尝试使用样式表和调色板(不是同时但作为替代).使用样式表,我不能使它看起来像常规进度条.改变颜色实际上就是我想做的事情,所以我认为通过使用调色板而不是样式表可以更容易做到这一点,但是调色板根本不会发生任何事情.
这是我为调色板尝试过的一个版本:
#include "myprogressbar.h"
#include <QtGui/QPalette>
MyProgressBar::MyProgressBar(QWidget *parent) :
QProgressBar(parent)
{}
void MyProgressBar::onProgress(int value, int maximum, QString phase)
{
setMaximum(maximum);
setValue(value);
setFormat(phase);
QPalette p = this->palette();
p.setColor(QPalette::Highlight, QColor(Qt::green));
this->setPalette(p);
}
...
Run Code Online (Sandbox Code Playgroud)
我也试过这里建议的版本,但这也没有帮助.
使用以下代码时,我的应用程序会在几秒钟后停止.摊位我的意思是挂起.我从Windows得到一个窗口,说等待或强制关闭.
我可能会补充说,只有当我在进度条窗口内单击或者单击它外部时它才会失去焦点.如果我开始这个例子并且不触摸任何东西它就会像它应该的那样工作.
from PyQt4 import QtCore
from PyQt4 import QtGui
class ProgressBar(QtGui.QWidget):
def __init__(self, parent=None, total=20):
super(ProgressBar, self).__init__(parent)
self.name_line = QtGui.QLineEdit()
self.progressbar = QtGui.QProgressBar()
self.progressbar.setMinimum(1)
self.progressbar.setMaximum(total)
main_layout = QtGui.QGridLayout()
main_layout.addWidget(self.progressbar, 0, 0)
self.setLayout(main_layout)
self.setWindowTitle("Progress")
def update_progressbar(self, val):
self.progressbar.setValue(val)
Run Code Online (Sandbox Code Playgroud)
像这样使用:
app = QtGui.QApplication(sys.argv)
bar = ProgressBar(total=101)
bar.show()
for i in range(2,100):
bar.update_progressbar(i)
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
有没有人建议如何在Qt QProgressBar上对齐状态文本?默认情况下,在Windows中,它显示在栏的右侧,但我更喜欢将其放在栏上方或栏内,而不必自己扩展对象并实现状态标签.
截图如下:
这个问题似乎已经多次以多种不同形式提出,但我没有找到一个与我的代码解决方案相关的问题.
当我运行它显示的程序时
QObject :: installEventFilter:无法过滤不同线程中对象的事件.
尽管如此,代码最初工作,但一段时间后炸弹和python发出错误说它停止工作.
我的代码如下:
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from xml.etree import ElementTree as ET
import os , time
class LayoutCreator(QDialog):
def __init__(self , parent=None):
super(LayoutCreator, self).__init__(parent)
self.Cameras_Update()
def Cameras_Update( self ): # Get all shots with camera plots and add them to the cameras_tree
busyBar = sqrl_QtTools.BusyBar( text = "Gathering Camera Data" ) # Looping progress bar
busyBar.start()
# loop through folder structure storing data
busyBar.Kill() # Close looping progress bar
class BusyBar(QThread): …
Run Code Online (Sandbox Code Playgroud) 我想知道是否可以改变PyQt Progressbar的颜色?
我有以下代码:
from PyQt4 import QtGui, QtCore
Pbar1 = QtGui.QProgressBar()
Pbar1.setParent(Frame1)
Pbar1.setGeometry(0, 0, 306, 30)
Pbar1.setValue(Frame1Value)
if Pbar1.value == 100
......Pbar1.setColor(Red)
Run Code Online (Sandbox Code Playgroud)
Frame1Value可靠于某些早期计算,并且假设从未计算到完全相同的值.
我希望进度条在值为100时变为"红色"(由于进度条不会显示超过100%的值,因此值设置为限制),因此给我一个更好的视觉图像,表明该值是'脱离约束'.
我知道.setColor不是Progressbar的已知命令,但它只是为了显示我的想法.
有谁知道怎么做,或者甚至可能?
Thx提前!
我正在使用 QT 4.8.5。我在 QProgressDialog 和 MinimumDuration 上遇到了一些问题。这是文档:http : //doc.qt.io/qt-4.8/qprogressdialog.html#minimumDuration-prop。
1.使用以下代码进行测试。该对话框根本不显示。但文档说:“对话框将在 minimumDuration 时间之后或设置任何进度后弹出”。
QProgressDialog* dlg = new QProgressDialog("Test", "cancel", 0, 10);
dlg->setMinimumDuration(8000);
Run Code Online (Sandbox Code Playgroud)
2.使用以下代码进行测试。该对话框将在 8 秒后显示。但文档说:“对话框将在 minimumDuration 时间之后或设置任何进度后弹出”。虽然行为与文档不同,但我认为当前的行为是可以接受的。
QProgressDialog* dlg = new QProgressDialog("Test", "cancel", 0, 10);
dlg->setMinimumDuration(8000);
dlg->setValue(0);
Run Code Online (Sandbox Code Playgroud)
3.使用以下代码进行测试。该对话框永远不会显示。但文档说:“对话框将在 minimumDuration 时间之后或设置任何进度后弹出”。
QProgressDialog* dlg = new QProgressDialog("Test", "cancel", 0, 10);
dlg->setMinimumDuration(8000);
dlg->setValue(1);
Run Code Online (Sandbox Code Playgroud)
4.使用以下代码进行测试。行为与第 2 项相同。
QProgressDialog* dlg = new QProgressDialog("Test", "cancel", 0, 10);
dlg->setMinimumDuration(8000);
dlg->setValue(0);
dlg->setValue(1);
Run Code Online (Sandbox Code Playgroud)
5.使用以下代码进行测试。只要将进度值设置为 1,就会显示对话框。 为什么 Sleep() 函数会影响这里的行为?
QProgressDialog* dlg …
Run Code Online (Sandbox Code Playgroud) 我开始在 QGIS 3 上创建插件,我的插件需要 QTableView 中的进度条。我想弄清楚如何在 PyQt5 的 QTableView 中添加一列进度条。但是我找不到与我的问题相关的任何代码或资源。
我的桌子
w= self.tasklist_tabv
delegate = ProgressDelegate(w)
w.setItemDelegateForColumn(2, delegate)
w.setHorizontalHeaderLabels(["ID", "Name", "Progress"])
for r, (_id, _name, _progress) in enumerate(data):
it_id = QtGui.QTableWidgetItem(_id)
it_name = QtGui.QTableWidgetItem(_name)
it_progress = QtGui.QTableWidgetItem()
chkBoxItem = QtGui.QTableWidgetItem()
chkBoxItem.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled)
chkBoxItem.setCheckState(QtCore.Qt.Unchecked)
it_progress.setData(QtCore.Qt.DisplayRole+1000, _progress)
w.insertRow(w.rowCount())
for c, item in enumerate((it_id, it_name, it_progress)):
w.setItem(r, c, item)
for c, item in enumerate((it_id, it_name, chkBoxItem)):
w.setItem(r, c+1, item)
class ProgressDelegate(QtGui.QStyledItemDelegate):
def paint(self, painter, option, index):
progress = index.data(QtCore.Qt.DisplayRole+1000)
opt = QtGui.QStyleOptionProgressBar() …
Run Code Online (Sandbox Code Playgroud) 在 Windows 上使用 setRange(0, 0) 时,如何在 QProgressBar 中间放置文本(不仅仅是数字)?
下面是一个 PyQt 示例,它仍然无法按预期工作。
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.resize(800, 600)
# self.lb=QLabel('finding resource ')
self.pb = QProgressBar()
self.pb.setRange(0, 0)
self.pb.setAlignment(Qt.AlignCenter)
self.pb.setFormat('finding resource...')
self.pb.setStyleSheet("text-align: center;")
# self.pb.setTextVisible(False)
self.statusBar().setSizeGripEnabled(False)
# print(self.statusBar().layout() )
self.statusBar().setStyleSheet("QStatusBar::item {border: none;}")
self.statusBar().addPermanentWidget(self.pb, 1)
if __name__ == "__main__":
app = QApplication(sys.argv)
ui = MainWindow()
ui.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud) qprogressbar ×10
qt ×6
c++ ×4
pyqt ×4
python ×3
progress-bar ×1
pyqt4 ×1
pyqt5 ×1
pyside ×1
qobject ×1
qt4 ×1
qtableview ×1
qthread ×1
windows ×1