collapse

* Posts Recentes

Laser Engraver - Alguém tem? por almamater
[Ontem às 22:03]


I Belive por dropes
[Ontem às 16:48]


Video - Eskil Steenberg - How I program C - Excelente por blabla
[22 de Novembro de 2023, 19:20]


Meu novo robô por dropes
[20 de Novembro de 2023, 16:37]


Reparação projetor led por elfo106
[16 de Novembro de 2023, 23:05]


Promoções 11-11 por dropes
[12 de Novembro de 2023, 18:17]


Odin - A better alternative to C, C++ and maybe Rust. por blabla
[09 de Novembro de 2023, 18:06]


Balança de precisão com célula de carga de 5 Toneladas por jm_araujo
[09 de Novembro de 2023, 17:17]


Suporte ferro de soldar T12 - Vendida por jm_araujo
[07 de Novembro de 2023, 14:03]


Fotovoltaicas sem gerar para a rede geral por almamater
[01 de Novembro de 2023, 19:13]

Autor Tópico: Como interagir com um textEdit?  (Lida 2310 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline SerraCabo

  • Mini Robot
  • *
  • Mensagens: 1.051
    • Serra Cabo
Como interagir com um textEdit?
« 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:

Código: [Seleccione]
PlotGUI.textEdit_log.append("mais texto")
ou isto

Código: [Seleccione]
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.

Código: [Seleccione]
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

Offline SerraCabo

  • Mini Robot
  • *
  • Mensagens: 1.051
    • Serra Cabo
Re: Como interagir com um textEdit?
« Responder #1 em: 23 de Abril de 2023, 19:48 »
Encontrei uma solução, simples como convém.

Código: [Seleccione]

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:

Código: [Seleccione]

def txt2log(str):
    txt_log.append(str)
    txt_log.repaint()


A partir de qualquer ponto, uma coisa destas funciona sempre.

Código: [Seleccione]

txt2log("appending text")


Abraço
SC