Найти - Пользователи
Полная версия: Вопрос о ГУИ
Начало » Python для новичков » Вопрос о ГУИ
1
kzoi_py
Всем доброго времени суток. Извиняйте может пост не в том разделе, но проблемма и в правду детская. Самому чёт не получается додуматься. Есть программка в которой прогресс бар и кнопка. Соответственно по нажатию кнопки срабатывает функция, которая создаёт N пустых файлов в отведённом каталоге. Хотелось бы визуализации процесса… вот наработки.
from PyQt4 import QtCore, QtGui
import os

class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(353, 153)
self.pushButton = QtGui.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(100, 90, 141, 41))
self.pushButton.setObjectName("pushButton")
self.progressBar = QtGui.QProgressBar(Form)
self.progressBar.setGeometry(QtCore.QRect(10, 20, 331, 23))
self.progressBar.setProperty("value", QtCore.QVariant(0))
self.progressBar.setObjectName("progressBar")

self.retranslateUi(Form)
QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL("clicked()"), self.prog)
QtCore.QObject.connect(self.progressBar, QtCore.SIGNAL("valueChanged(int)"), self.ProUp)
#QtCore.QObject.connect(self.prog, QtCore.SIGNAL("QtSig()"), self.ProUp)
QtCore.QMetaObject.connectSlotsByName(Form)

def retranslateUi(self, Form):
Form.setWindowTitle(QtGui.QApplication.translate("Form", "Form", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton.setText(QtGui.QApplication.translate("Form", "PushButton", None, QtGui.QApplication.UnicodeUTF8))


def prog(self):
os.system('mkdir forfile')
self.pushButton.checked=0
os.chdir('forfile')
for i in range(0, 10000):
j = 0
fp = open(str(i), 'a')
fp.close()
if i == 100:
j += 1
#QtCore.QObject.emit(QtCore.SIGNAL("ProUp()"))
#self.progressBar.emit(QtCore.SIGNAL("valueChanged()"))
#self.progressBar.setValue(j)
self.progressBar.setProperty("value", QtCore.QVariant(j))

def ProUp(self):
val = self.progressBar.value() + 1
self.progressBar.setValue(val)
Form.update()
За ранее спасибо
goblin_maks
я тоже не профи..но сделал бы так..создаем файл с формой..для того чтоб отдельно редактировать функционал и отдельно редактировать гуи..так проще новые элементы гуи наворачивать..
файл example.py:
from PyQt4 import QtCore, QtGui

class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(127, 144)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.verticalLayout_2 = QtGui.QVBoxLayout(self.centralwidget)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.groupBox = QtGui.QGroupBox(self.centralwidget)
self.groupBox.setObjectName("groupBox")
self.verticalLayout = QtGui.QVBoxLayout(self.groupBox)
self.verticalLayout.setObjectName("verticalLayout")
self.progressBar = QtGui.QProgressBar(self.groupBox)
self.progressBar.setProperty("value", QtCore.QVariant(24))
self.progressBar.setObjectName("progressBar")
self.verticalLayout.addWidget(self.progressBar)
self.pushButton = QtGui.QPushButton(self.groupBox)
self.pushButton.setObjectName("pushButton")
self.verticalLayout.addWidget(self.pushButton)
self.verticalLayout_2.addWidget(self.groupBox)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 127, 19))
self.menubar.setObjectName("menubar")
self.menuMenu = QtGui.QMenu(self.menubar)
self.menuMenu.setObjectName("menuMenu")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.actionCreateFiles = QtGui.QAction(MainWindow)
self.actionCreateFiles.setObjectName("actionCreateFiles")
self.actionExit = QtGui.QAction(MainWindow)
self.actionExit.setObjectName("actionExit")
self.menuMenu.addAction(self.actionCreateFiles)
self.menuMenu.addSeparator()
self.menuMenu.addAction(self.actionExit)
self.menubar.addAction(self.menuMenu.menuAction())

self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
self.groupBox.setTitle(QtGui.QApplication.translate("MainWindow", "GroupBox", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "Create", None, QtGui.QApplication.UnicodeUTF8))
self.menuMenu.setTitle(QtGui.QApplication.translate("MainWindow", "Menu", None, QtGui.QApplication.UnicodeUTF8))
self.actionCreateFiles.setText(QtGui.QApplication.translate("MainWindow", "CreateFiles", None, QtGui.QApplication.UnicodeUTF8))
self.actionExit.setText(QtGui.QApplication.translate("MainWindow", "Exit", None, QtGui.QApplication.UnicodeUTF8))
и файл example_func.py:
from PyQt4 import QtCore, QtGui
from example import Ui_MainWindow
import os, sys


class MyForm(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.ui.progressBar.setValue(0)
self.ui.spinBox.setValue(99)
@QtCore.pyqtSignature("")
def on_pushButton_clicked(self):

def file_creator(n, loc):
tmp_loc=os.getcwd()
try:
os.mkdir(str(tmp_loc+"//"+loc))
except:
QtGui.QMessageBox.critical(self, "Error", (QtGui.QApplication.translate("MainWindow", "Problem with dir!\n"+str(tmp_loc+"//"+loc), None, QtGui.QApplication.UnicodeUTF8)), QtGui.QMessageBox.Ok)



for i in range(n):
myfile=open(tmp_loc+"//"+loc+"//"+str(i)+".txt","w")
myfile.close()
self.ui.progressBar.setValue(i+1)
self.ui.progressBar.setValue(0)

if len(self.ui.lineEdit.text())>1 and self.ui.spinBox.value()>1:
self.ui.progressBar.setRange(0, self.ui.spinBox.value())
file_creator(int(self.ui.spinBox.value()), str(self.ui.lineEdit.text()))
else:
QtGui.QMessageBox.critical(self, "Error", (QtGui.QApplication.translate("MainWindow", "Need more value!", None, QtGui.QApplication.UnicodeUTF8)), QtGui.QMessageBox.Ok)




if __name__ == "__main__":


app = QtGui.QApplication(sys.argv)
form = MyForm()
form.show()
sys.exit(app.exec_())
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB