Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python3
- # -*- coding: utf-8 -*-
- import sys
- from PyQt5.QtCore import QFile, QTextStream
- from PyQt5.QtGui import QBrush, QColor
- from PyQt5.QtWidgets import (QAction, QApplication, QFileDialog, QHBoxLayout,
- QHeaderView, QMainWindow, QMenu, QMenuBar,
- QStatusBar, QTableWidget, QTableWidgetItem,
- QWidget)
- class planilhaRoteiro(QTableWidget):
- def __init__(self):
- QTableWidget.__init__(self)
- self.setColumnCount(9)
- self.setHorizontalHeaderLabels(
- ["R/L", "CM/ID", "TITULO", "DUR", "PT", "CLIENTE", "", "PT",
- "POSICAO"])
- self.items = 0
- # Popular tabela com arquivo TXT
- def inserir(self, r, cm, titulo, dur, pt, cliente, ptposicao, posicao):
- self.insertRow(self.items)
- self.setItem(self.items, 0, QTableWidgetItem(r))
- self.setItem(self.items, 1, QTableWidgetItem(cm))
- self.setItem(self.items, 2, QTableWidgetItem(titulo))
- self.setItem(self.items, 3, QTableWidgetItem(dur))
- self.setItem(self.items, 4, QTableWidgetItem(pt))
- self.setItem(self.items, 5, QTableWidgetItem(cliente))
- self.setItem(self.items, 7, QTableWidgetItem(ptposicao))
- self.setItem(self.items, 8, QTableWidgetItem(posicao))
- self.items += 1
- # Ajustar tabela ao conteúdo do TXT
- def ajustarTamanhoColuna(self):
- self.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)
- # Pular 2 linhas entre intervalos distintos
- def inserirLinhasVazias(self):
- self.continuarLoop = True
- self.itemPtIpAnterior = QTableWidgetItem()
- self.itemPtIp = QTableWidgetItem()
- self.itemPGMPosAnterior = QTableWidgetItem()
- self.itemPGMPos = QTableWidgetItem()
- self.linha = 1
- while (self.continuarLoop):
- # Dados PT/IP
- self.itemPtIpAnterior = self.item(self.linha-1, 7)
- self.itemPtIp = self.item(self.linha, 7)
- self.PtIpAnterior = self.itemPtIpAnterior.text()
- self.PtIp = self.itemPtIp.text()
- # Dados PGMPos
- self.itemPGMPosAnterior = self.item(self.linha-1, 8)
- self.itemPGMPos = self.item(self.linha, 8)
- self.PGMPosAnterior = self.itemPGMPosAnterior.text()
- self.PGMPos = self.itemPGMPos.text()
- if (self.PGMPos != self.PGMPosAnterior or self.PtIp != self.PtIpAnterior):
- self.insertRow(self.linha)
- self.setItem(self.linha, 0, QTableWidgetItem(""))
- self.setItem(self.linha, 1, QTableWidgetItem(""))
- self.setItem(self.linha, 2, QTableWidgetItem(""))
- self.setItem(self.linha, 3, QTableWidgetItem(""))
- self.setItem(self.linha, 4, QTableWidgetItem(""))
- self.setItem(self.linha, 5, QTableWidgetItem(""))
- self.setItem(self.linha, 7, QTableWidgetItem(""))
- self.setItem(self.linha, 8, QTableWidgetItem(""))
- self.insertRow(self.linha+1)
- self.setItem(self.linha+1, 0, QTableWidgetItem(""))
- self.setItem(self.linha+1, 1, QTableWidgetItem(""))
- self.setItem(self.linha+1, 2, QTableWidgetItem(""))
- self.setItem(self.linha+1, 3, QTableWidgetItem(""))
- self.setItem(self.linha+1, 4, QTableWidgetItem(""))
- self.setItem(self.linha+1, 5, QTableWidgetItem(""))
- self.setItem(self.linha+1, 7, QTableWidgetItem(""))
- self.setItem(self.linha+1, 8, QTableWidgetItem(""))
- self.linha += 2
- self.totalLinha = self.rowCount()
- self.linha += 1
- if (self.totalLinha == self.linha):
- self.continuarLoop = False
- def colorirLinhas(self):
- self.itemRML = QTableWidgetItem()
- self.linha = 0
- self.totalLinha = self.rowCount()
- self.continuarLoop = True
- while (self.continuarLoop):
- self.itemRML = self.item(self.linha, 0)
- self.rml = self.itemRML.text()
- if (self.rml == "R"):
- ' self.itemRML.setForeground(QBrush.setColor(QColor.setBlue))
- self.linha += 1
- if (self.totalLinha == self.linha):
- self.continuarLoop = False
- class BarraMenu(QMenuBar):
- def __init__(self, roteiro):
- QMenuBar.__init__(self)
- # Menu ARQUIVO
- self.menuArquivo = QMenu('ARQUIVO', self)
- # SubMenu ARQUIVO
- self.newAcaoAbrirRoteiro = QAction('Novo Roteiro', self)
- self.newAcaoAbrirRoteiro.setStatusTip("Carrega novo Roteiro, TXT")
- self.newAcaoAbrirRoteiro.setShortcut("Ctrl+A")
- self.newAcaoAbrirRoteiro.triggered.connect(self.abrirRoteiroTXT)
- self.menuArquivo.addAction(self.newAcaoAbrirRoteiro)
- self.addMenu(self.menuArquivo)
- # Menu AJUDA
- self.menuAjuda = QMenu('AJUDA', self)
- # SubMenu AJUDA
- self.newAcaoSobre = QAction('Sobre', self)
- self.menuAjuda.addAction(self.newAcaoSobre)
- self.addMenu(self.menuAjuda)
- # Funcao Abrir TXT - Roteiro enviado pela OPEC
- def abrirRoteiroTXT(self):
- dialogAbrirRoteiro = QFileDialog.getOpenFileName(
- self, "ABRIR ROTEIRO", "C:\\roteiro\\", "Roteiro RPC (*.txt)")
- if dialogAbrirRoteiro:
- if dialogAbrirRoteiro[0] != "":
- dadosArquivo = QFile(dialogAbrirRoteiro[0])
- dadosArquivo.open(QFile.ReadOnly)
- ts = QTextStream(dadosArquivo)
- self.continuar = True
- while self.continuar:
- dados_extraidos = ts.readLine()
- if dados_extraidos == "":
- self.continuar = False
- break
- self.r = dados_extraidos[321:322].strip()
- self.cmid = dados_extraidos[2:8].strip()
- self.titulo = dados_extraidos[68:97].strip()
- self.duracao = dados_extraidos[99:102].strip()
- self.ptcp = dados_extraidos[102:104].strip()
- self.cliente = dados_extraidos[104:255].strip()
- self.pt = dados_extraidos[330:332].strip()
- self.posicao = dados_extraidos[332:364].strip()
- roteiro.inserir(self.r, self.cmid, self.titulo, self.duracao,
- self.ptcp, self.cliente, self.pt, self.posicao)
- roteiro.ajustarTamanhoColuna()
- roteiro.inserirLinhasVazias()
- roteiro.colorirLinhas()
- class TelaCentral(QWidget):
- def __init__(self, roteiro):
- QWidget.__init__(self)
- self.layout = QHBoxLayout()
- self.layout.addWidget(roteiro)
- self.setLayout(self.layout)
- class BarraStatus(QStatusBar):
- def __init__(self):
- QStatusBar.__init__(self)
- self.showMessage('PRONTO')
- class JanelaPrincipal(QMainWindow):
- def __init__(self, menu, telacentral, status):
- QMainWindow.__init__(self)
- self.setWindowTitle("PROGRAMACAO - ROTEIRO RPC")
- self.setMenuBar(menu)
- self.setCentralWidget(telacentral)
- self.setStatusBar(status)
- self.resize(800, 600)
- self.show()
- if __name__ == "__main__":
- # Qt Application
- app = QApplication(sys.argv)
- # app.setStyle('windowsvista')
- # app.setStyle('Windows')
- app.setStyle('Fusion')
- # Planilha Roteiro
- roteiro = planilhaRoteiro()
- # Barra de Menu
- menu = BarraMenu(roteiro)
- # Tela Central
- telacentral = TelaCentral(roteiro)
- # Barra de Status
- status = BarraStatus()
- # Janela Principal
- janela = JanelaPrincipal(menu, telacentral, status)
- # Execute application
- sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement