Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在QProgressBar上用忙指示器显示文本?_Python_Qt_Qt4_Pyqt_Pyqt4 - Fatal编程技术网

Python 如何在QProgressBar上用忙指示器显示文本?

Python 如何在QProgressBar上用忙指示器显示文本?,python,qt,qt4,pyqt,pyqt4,Python,Qt,Qt4,Pyqt,Pyqt4,我想在QProgressBar上显示文本。我正在使用setRange(0,0)来显示忙指示灯 progressBar = QProgressBar() progressBar.setFormat('some text') progressBar.setValue(0) progressBar.setRange(0, 0) 我必须删除setRange(0,0),否则将不显示文本。有没有一种方法可以同时显示忙指示器和文本?您正在寻找QProgressDialog类。以下是一个例子: import

我想在QProgressBar上显示文本。我正在使用
setRange(0,0)
来显示忙指示灯

progressBar = QProgressBar()
progressBar.setFormat('some text')
progressBar.setValue(0)
progressBar.setRange(0, 0)

我必须删除
setRange(0,0)
,否则将不显示文本。有没有一种方法可以同时显示忙指示器和文本?

您正在寻找QProgressDialog类。以下是一个例子:

import sys
from PySide import QtGui

app = QtGui.QApplication(sys.argv)

progressbar = QtGui.QProgressDialog(labelText='Some Text...',
                                    minimum = 0, maximum = 0)

progressbar.setWindowTitle('ProgressBar Demo')
progressbar.show()
app.exec_()

您正在查找QProgressDialog类。以下是一个例子:

import sys
from PySide import QtGui

app = QtGui.QApplication(sys.argv)

progressbar = QtGui.QProgressDialog(labelText='Some Text...',
                                    minimum = 0, maximum = 0)

progressbar.setWindowTitle('ProgressBar Demo')
progressbar.show()
app.exec_()

在与@Onlyjus反复讨论之后,我终于明白了整个问题。以下是一个解决方案:

from PyQt4 import QtGui, QtCore
import os
import time

class MyBar(QtGui.QWidget):
    i = 0
    style =''' 
    QProgressBar
    {
        border: 2px solid grey;
        border-radius: 5px;
        text-align: center;
    }
    '''
    def __init__(self):
        super(MyBar, self).__init__()
        grid = QtGui.QGridLayout()

        self.bar = QtGui.QProgressBar()
        self.bar.setMaximum(1)
        self.bar.setMinimum(0)

        self.bar.setStyleSheet(self.style)

        self.bar.setRange(0,0)

        self.label=QtGui.QLabel("Nudge")
        self.label.setStyleSheet("QLabel { font-size: 20px }")
        self.label.setAlignment(QtCore.Qt.AlignCenter)


        grid.addWidget(self.bar, 0,0)
        grid.addWidget(self.label, 0,0)
        self.setLayout(grid)

class MainWindow(QtGui.QMainWindow):

    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

        self.bar = MyBar()

        self.setCentralWidget(self.bar)


if __name__ == '__main__':
    app = QtGui.QApplication([])
    win = MainWindow()
    win.show();
    QtGui.QApplication.instance().exec_()
基本上,它在进度条上浮动一个标签

以下是我提供的原始答案

我会把它放在这里,因为不管怎样它可能会有帮助

使用setFormat方法和样式表。下面的工作示例演示了如何

from PyQt4 import QtGui, QtCore
import os
import time


class MainWindow(QtGui.QMainWindow):
    i = 0
    style =''' 
    QProgressBar
    {
        border: 2px solid grey;
        border-radius: 5px;
        text-align: center;
    }
    '''

    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        grid = QtGui.QGridLayout()

        self.bar = QtGui.QProgressBar()
        self.bar.setMaximum(1)
        self.bar.setMinimum(0)

        self.bar.setStyleSheet(self.style)
        self.bar.setFormat("Custom %v units %p % %m ticks")

        self.setCentralWidget(self.bar)


        self.timer = QtCore.QTimer()
        self.timer.timeout.connect(self.update)
        self.timer.start(500) # update every 0.5 sec

    def update(self):
        print self.i
        self.i += 1
        self.i %= 2
        self.bar.setValue(self.i)


if __name__ == '__main__':
    app = QtGui.QApplication([])
    win = MainWindow()
    win.show();
    QtGui.QApplication.instance().exec_()

在与@Onlyjus反复讨论之后,我终于明白了整个问题。以下是一个解决方案:

from PyQt4 import QtGui, QtCore
import os
import time

class MyBar(QtGui.QWidget):
    i = 0
    style =''' 
    QProgressBar
    {
        border: 2px solid grey;
        border-radius: 5px;
        text-align: center;
    }
    '''
    def __init__(self):
        super(MyBar, self).__init__()
        grid = QtGui.QGridLayout()

        self.bar = QtGui.QProgressBar()
        self.bar.setMaximum(1)
        self.bar.setMinimum(0)

        self.bar.setStyleSheet(self.style)

        self.bar.setRange(0,0)

        self.label=QtGui.QLabel("Nudge")
        self.label.setStyleSheet("QLabel { font-size: 20px }")
        self.label.setAlignment(QtCore.Qt.AlignCenter)


        grid.addWidget(self.bar, 0,0)
        grid.addWidget(self.label, 0,0)
        self.setLayout(grid)

class MainWindow(QtGui.QMainWindow):

    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

        self.bar = MyBar()

        self.setCentralWidget(self.bar)


if __name__ == '__main__':
    app = QtGui.QApplication([])
    win = MainWindow()
    win.show();
    QtGui.QApplication.instance().exec_()
基本上,它在进度条上浮动一个标签

以下是我提供的原始答案

我会把它放在这里,因为不管怎样它可能会有帮助

使用setFormat方法和样式表。下面的工作示例演示了如何

from PyQt4 import QtGui, QtCore
import os
import time


class MainWindow(QtGui.QMainWindow):
    i = 0
    style =''' 
    QProgressBar
    {
        border: 2px solid grey;
        border-radius: 5px;
        text-align: center;
    }
    '''

    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        grid = QtGui.QGridLayout()

        self.bar = QtGui.QProgressBar()
        self.bar.setMaximum(1)
        self.bar.setMinimum(0)

        self.bar.setStyleSheet(self.style)
        self.bar.setFormat("Custom %v units %p % %m ticks")

        self.setCentralWidget(self.bar)


        self.timer = QtCore.QTimer()
        self.timer.timeout.connect(self.update)
        self.timer.start(500) # update every 0.5 sec

    def update(self):
        print self.i
        self.i += 1
        self.i %= 2
        self.bar.setValue(self.i)


if __name__ == '__main__':
    app = QtGui.QApplication([])
    win = MainWindow()
    win.show();
    QtGui.QApplication.instance().exec_()

谢谢,但它不会在进度条上显示文本,而是在进度条上方显示文本。这不是我想要的。谢谢,但它不会在进度条上显示文本,而是在进度条上方显示文本。这不是我想要的。它似乎在闪烁,因为状态每0.5秒在开/关之间变化。当条形图的值为1(100%)时,指示器显示已满(即进度记号填充整个条形图)。当条形图的值为0(0%)时,指示器将清除所有刻度。我相信这就是最初的问题所要求的。条形图的值每0.5秒在1和0之间切换一次。当范围设置为0,0时,
setRange(0,0)
,progressbar将进入特定于样式的“忙碌”模式。通常,这是一个具有单个块的条,该块从条的一端移动到另一端,或来回反弹。它不会闪烁。试试QtDesigner。是的,我明白你现在在说什么。我把忙碌模式误认为是“开/关”指示灯,而不是左右移动的指示灯。我只是用另一个小部件更新了我的答案,它在进度条顶部显示文本,并带有滚动指示灯。更新就像一个符咒!我会接受这个答案。。。我调整了答案并将其发布在gist上:它似乎在闪烁,因为状态每0.5秒在开/关之间变化。当条形图的值为1(100%)时,指示器显示已满(即进度记号填充整个条形图)。当条形图的值为0(0%)时,指示器将清除所有刻度。我相信这就是最初的问题所要求的。条形图的值每0.5秒在1和0之间切换一次。当范围设置为0,0时,
setRange(0,0)
,progressbar将进入特定于样式的“忙碌”模式。通常,这是一个具有单个块的条,该块从条的一端移动到另一端,或来回反弹。它不会闪烁。试试QtDesigner。是的,我明白你现在在说什么。我把忙碌模式误认为是“开/关”指示灯,而不是左右移动的指示灯。我只是用另一个小部件更新了我的答案,它在进度条顶部显示文本,并带有滚动指示灯。更新就像一个符咒!我会接受这个答案。。。我调整了答案并将其发布在gist上: