python progressbar 比例不到100%_python – PyQt进度条没有更新或出现,直到100%

编辑:PyQt4进度条上有很多类似的帖子没有更新.他们都专注于线程和问题的问题.程序实际更新窗口的位置.虽然有用,但我的代码结构合理,回复不实用.这里给出的接受的答案很简单,至关重要.作品.

我在Win 7 x64机器上使用Python 2.7和PyQT 4.

我正在尝试清除我的窗口中的一个窗口小部件,一个“接受”按钮,查看代码,并用进度条替换它.

即使我关闭了“接受”按钮&在输入处理循环之前添加进度条.窗口仅在循环结束后更新.进度条直接跳到100%.

我的代码,

from PyQt4 import QtCore, QtGui

import sys

import time

class CentralWidget(QtGui.QWidget):

def __init__(self, parent=None):

super(CentralWidget, self).__init__(parent)

# set layouts

self.layout = QtGui.QVBoxLayout(self)

# Poly names

self.pNames = QtGui.QLabel("Import file name", self)

self.polyNameInput = QtGui.QLineEdit(self)

# Polytype selection

self.polyTypeName = QtGui.QLabel("Particle type", self)

polyType = QtGui.QComboBox(self)

polyType.addItem("")

polyType.addItem("Random polyhedra")

polyType.addItem("Spheres")

polyType.addItem("Waterman polyhedra")

polyType.activated[str].connect(self.onActivated)

# Place widgets in layout

self.layout.addWidget(self.pNames)

self.layout.addWidget(self.polyNameInput)

self.layout.addWidget(self.polyTypeName)

self.layout.addWidget(polyType)

self.layout.addStretch()

# Combobox choice

def onActivated(self, text):

if text=="Random polyhedra":

self.randomPolyhedra(text)

if text=="Spheres": # not implementaed yet

self.polyTypeName.setText("Not implemented yet.")

self.polyTypeName.adjustSize()

if text=="Waterman polyhedra": # not implementaed yet

self.polyTypeName.setText("Not implemented yet.")

self.polyTypeName.adjustSize()

# New options for random polyhedra choice

def randomPolyhedra(self, text):

self.polyNumberLbl = QtGui.QLabel("How many: ", self)

self.polyNumber = QtGui.QLineEdit(self)

self.acceptSeed = QtGui.QPushButton('Accept') # Accept button created

self.acceptSeed.clicked.connect(lambda: self.ranPolyGen())

self.layout.addWidget(self.polyNumberLbl)

self.layout.addWidget(self.polyNumber)

self.layout.addWidget(self.acceptSeed) # Accept button in layout

self.randFlag = True

self.polyTypeName.setText(text)

self.polyTypeName.adjustSize()

# Act on option choices for random polyhedra

def ranPolyGen(self):

polyCount = int(self.polyNumber.text())

self.progressBar = QtGui.QProgressBar() # Progress bar created

self.progressBar.setMinimum(1)

self.progressBar.setMaximum(polyCount)

self.acceptSeed.close() # Accept button closed

self.layout.addWidget(self.progressBar) # Add progressbar to layout

for poly in range(1, polyCount+1):

time.sleep(1) # Calls to main polyhedral generating code go here

print poly

self.progressBar.setValue(poly)

self.doneLbl = QtGui.QLabel("Done", self)

self.layout.addWidget(self.doneLbl)

# Creates GUI

class Polyhedra(QtGui.QMainWindow):

def __init__(self):

super(Polyhedra, self).__init__()

# Place central widget in layout

self.central_widget = CentralWidget(self)

self.setCentralWidget(self.central_widget)

# Set up window

self.setGeometry(500, 500, 300, 300)

self.setWindowTitle('Pyticle')

self.show()

# Combo box

def onActivated(self, text):

self.central_widget.onActivated(text)

def main():

app = QtGui.QApplication(sys.argv)

poly = Polyhedra()

sys.exit(app.exec_())

if __name__ == '__main__':

main()

下面是循环执行期间的图片&完成后.

我不认为我已经了解了addWidget()方法.我的印象是,这将为当前布局添加另一个小部件(这里是一个vbox布局)& .close()方法在被指示时删除了一个小部件.

我错过了什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值