我有class Ui_MainWindow(object)
创建一个带有进度条的窗口,还有class OtherClass(object)
包含局部int变量在循环中递增的方法。
如何将局部变量值更改连接到程序条值更改?
import sys
from PyQt4.uic.Compiler.qtproxies import QtGui
from PyQt4 import QtGui
from Ui_MainWindow import Ui_MainWindow
def main():
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
from PyQt4 import QtCore, QtGui
from MainGui.OtherClass import OtherClass
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s
class Ui_MainWindow(object):
def myButtonSlot(self):
objVar=OtherClass()
objVar.method()
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(389, 332)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.verticalLayout = QtGui.QVBoxLayout(self.centralwidget)
self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
self.pushButton = QtGui.QPushButton(self.centralwidget)
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.pushButton.clicked.connect(self.myButtonSlot)
self.verticalLayout.addWidget(self.pushButton)
self.progressBar = QtGui.QProgressBar(self.centralwidget)
self.progressBar.setProperty("value", 24)
self.progressBar.setObjectName(_fromUtf8("progressBar"))
self.verticalLayout.addWidget(self.progressBar)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 389, 21))
self.menubar.setObjectName(_fromUtf8("menubar"))
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "PushButton", None, QtGui.QApplication.UnicodeUTF8))
class OtherClass(object):
def method(self):
for i in range(100): # i want to connect variable i to progress bar value
print i
for j in range(100500):
pass
下面的文章有一个版本,每次按下按钮,进度条都会增加10%。以及使用计时器增加进度条的版本。(我自己正在学习)
在Qt设计器中,添加进度条和按钮。单击“编辑信号/插槽”,将一行从按钮拖到窗口中的某个位置,当按钮被“pressed()”时,添加一个插槽(或信号??)称为“button_pressed()”(使用+按钮进行此操作)。完成此操作后,“确定”按钮将灰显-选择您创建的插槽,然后按“确定”。
将文件另存为ui_MainWindow.ui(注意大写字母)。 使用批处理文件转换为py文件>
这个文件应该看起来像…(你不需要编辑这个)。
创建“program.py”文件。这是你要运行的文件。。。
现在,当你对主窗口进行子类化时,好的事情就发生在这里。将此文件称为“mainWindow.py”。小心资本化。
有一个很好的教程here,我用它来创建一个备用的'mainWindow.py',它使用一个计时器来增加进度条。它不会使用sleep循环或CPU密集型循环来阻塞代码。我不明白多线程,多处理器的选择,还没有评论使用这些。
相关问题 更多 >
编程相关推荐