LusoRobótica - Robótica em Português
Software => Python => Tópico iniciado por: SerraCabo em 21 de Abril de 2023, 12:15
-
Olá.
E finalmente comecei a trabalhar em P. Aqui em casa a palavra Python é proibida! Trabalhava em C ... passei a P. Total normalidade. ...passando à frente ...
Fiz um programeco em Python + PyCharm que está a funcionar. este ambiente "P" é muito simpático e funcional (ainda andei a ver se havia forma de escrever em C em cima disto mas o que encontrei cheirou-me a esturro). Comecei então a 'humanizar' a coisa. Instalei o QT_Designer, fiz uma janela Windows, coloquei lá várias coisas entre as quais um textEdit no qual quero fazer 'desfilar' mensagens em jeito de log.
Não consigo atinar com a sintaxe para escrever mensagens (texto) nesse textEdit a partir das funções escritas inicialmente.
O caso passa-se com textEdit_log.
Consigo escrever a partir de dentro da própria class(?) mas não consigo de fora dela. Não consigo atinar com a sintaxe. Já andei à pesca na Internet e népia.
O que me pareceria razoável seria isto:
PlotGUI.textEdit_log.append("mais texto")
ou isto
PlotGUI.textEdit_log.append("mais texto")
... mas nada. Terei que tornar público(?) o 'objecto'?
O que está abaixo é papagueado a partir de um vídeo que explica como usar o Python com o QT_Designer.
from PyQt5.QtWidgets import *
from PyQt5 import uic
def main():
app = QApplication([])
window = PlotGUI()
app.exec_()
if __name__ == '__main__':
main()
class PlotGUI(QMainWindow):
def __init__(self):
super(PlotGUI, self).__init__()
uic.loadUi("PlotGUI.ui", self)
self.show()
self.textEdit_log.append("Hi!") # <<<<<<< FUNCIONA mas só aqui
Abraço
SC
-
Encontrei uma solução, simples como convém.
class PlotGUI(QMainWindow):
def __init__(self):
super(PlotGUI, self).__init__()
uic.loadUi("PlotGUI.ui", self)
self.show()
global txt_log # cria-se uma variável global
txt_log = self.textEdit_log # faz-se apontar para ela o famigerado textEdit.
Para refescar o txtEdit, uma pequena função para agregar:
def txt2log(str):
txt_log.append(str)
txt_log.repaint()
A partir de qualquer ponto, uma coisa destas funciona sempre.
txt2log("appending text")
Abraço
SC