terça-feira, 12 de janeiro de 2010

Meu Primeiro Script PyQt

Consegui depois de algum estudo criar o meu primeiro script em Python + Qt, ele é muito simples e fiz com o intuito de resolver um problema de renomear um monte de fotos de uma pasta.
Ele funciona assim, você digita a pasta onde estão os arquivos, por exemplo:

/home/user/arquivos

depois coloca o nome base do arquivo, por exemplo:

fotos2006.jpg

depois ele renomeia as fotos como 1fotos2006.jpg,2fotos2006.jpg e assim por diante. É uma função muito simples, mas vale à pena o aprendizado, tive muitos problemas para ele funcionar com caracteres especiais.

Aqui vai o script (estou sem tempo para inserir comentários depois eu faço isso)



# -*- coding: utf-8 -*-

from PyQt4 import QtCore, QtGui
from os import system
import subprocess
class Ui_janelaPrincipal(object):
def setupUi(self, janelaPrincipal):
janelaPrincipal.setObjectName("janelaPrincipal")
janelaPrincipal.resize(419, 226)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("../../star.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
janelaPrincipal.setWindowIcon(icon)
self.centralwidget = QtGui.QWidget(janelaPrincipal)
self.centralwidget.setObjectName("centralwidget")
self.label = QtGui.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(10, 10, 59, 30))
self.label.setObjectName("label")
self.label_2 = QtGui.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(10, 60, 91, 51))
self.label_2.setObjectName("label_2")
self.label_3 = QtGui.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(10, 120, 59, 18))
self.label_3.setObjectName("label_3")
self.mensagens = QtGui.QLabel(self.centralwidget)
self.mensagens.setGeometry(QtCore.QRect(110, 120, 131, 61))
self.mensagens.setObjectName("mensagens")
self.botaoRenomear = QtGui.QPushButton(self.centralwidget)
self.botaoRenomear.setGeometry(QtCore.QRect(290, 140, 106, 27))
self.botaoRenomear.setObjectName("botaoRenomear")
self.caminho = QtGui.QLineEdit(self.centralwidget)
self.caminho.setGeometry(QtCore.QRect(100, 10, 311, 28))
self.caminho.setObjectName("caminho")
self.novo_arquivo = QtGui.QLineEdit(self.centralwidget)
self.novo_arquivo.setGeometry(QtCore.QRect(100, 70, 113, 31))
self.novo_arquivo.setObjectName("novo_arquivo")
janelaPrincipal.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(janelaPrincipal)
self.menubar.setGeometry(QtCore.QRect(0, 0, 419, 24))
self.menubar.setObjectName("menubar")
janelaPrincipal.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(janelaPrincipal)
self.statusbar.setObjectName("statusbar")
janelaPrincipal.setStatusBar(self.statusbar)
QtCore.QObject.connect(self.botaoRenomear, QtCore.SIGNAL("clicked()"), self.renomear)
self.retranslateUi(janelaPrincipal)
QtCore.QMetaObject.connectSlotsByName(janelaPrincipal)

def renomear(self):
caminho = unicode(self.caminho.text())
arquivo = unicode(self.novo_arquivo.text())
completo = caminho + '/.caminho'
system(u"ls %s > %s/.caminho" % (caminho, caminho))
prepare21 = open(unicode(completo), 'r')
linhas = prepare21.readlines()
contagem = 0
for arquivos in linhas:
contagem += 1
filesX = arquivos[:len(arquivos) - 1]

#print filesX
#try:
#system(u'mv -fv "%s/%s" "%s/%d%s"' % (caminho, filesX, caminho, contagem, arquivo))
# print fileX
subprocess.call(['mv', '-fv', caminho + '/' + unicode(filesX, 'utf-8'), caminho + '/' + str(contagem) + arquivo])
self.mensagens.setText(u"transação efetuada\ncom sucesso")
#except:
#self.mensagens.setText(u"Falha geral\nna transação")



def retranslateUi(self, janelaPrincipal):
janelaPrincipal.setWindowTitle(QtGui.QApplication.translate("janelaPrincipal", "Renomear em massa", None, QtGui.QApplication.UnicodeUTF8))
self.label.setText(QtGui.QApplication.translate("janelaPrincipal", "Pastas:", None, QtGui.QApplication.UnicodeUTF8))
self.label_2.setText(QtGui.QApplication.translate("janelaPrincipal", "Nome Base :", None, QtGui.QApplication.UnicodeUTF8))
self.label_3.setText(QtGui.QApplication.translate("janelaPrincipal", "Status:", None, QtGui.QApplication.UnicodeUTF8))
self.botaoRenomear.setText(QtGui.QApplication.translate("janelaPrincipal", "Renomear", None, QtGui.QApplication.UnicodeUTF8))


if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
janelaPrincipal = QtGui.QMainWindow()
ui = Ui_janelaPrincipal()
ui.setupUi(janelaPrincipal)
janelaPrincipal.show()
sys.exit(app.exec_())






Nenhum comentário: