Erro programa Python - Pyqt5

1. Erro programa Python - Pyqt5

Gabriel de Souza Menezes
steeldark

(usa Outra)

Enviado em 18/05/2021 - 00:40h

Boa noite,

Sou iniciante na area do python, e estou com dificuldade na parte de threading juntamnete com uma interface gui, criada no QT Designer.
conversando com uns amigos me indicaram este forum, pois talvez pudessem me ajudar/esclarecer qual o problema.
Acontece que não entendo muito dessa area, comecei a poucos meses e fiz o seguinte codigo de exemplo:

from PyQt5 import  uic,QtWidgets
from bs4.element import TemplateString
import requests
import time
import threading

def atualiza_dados():
a = 0
while 1:
time.sleep(2)
tela.label_6.setText(str(a))
tela.tabela1.setItem(0, 0, QtWidgets.QTableWidgetItem('Valor de A: '))
tela.tabela1.setItem(0, 1, QtWidgets.QTableWidgetItem(str(a)))
a += 1

app=QtWidgets.QApplication([])
tela=uic.loadUi("tela_monitor.ui")
tela.tabela1.setRowCount(1)
threading.Thread(target=atualiza_dados,daemon=True).start()
tela.show()
app.exec()

O codigo acima, incrementa a variavel "a" e adciona o valor dentro de uma label, e dentro de uma linha que por sua vez está dentro de uma tabela. porem estou usando uma threading para executar o loop infinito e não congelar a janela principal. mas rodando o programa eu consigo atualizar somente o valor da label, somente atualiza o valor da tabela quando eu clico nela.
outro problema é que aparece as seguintes mensagens no cmd ao executar o programa:
QObject::connect: Cannot queue arguments of type 'QVector<int>'
(Make sure 'QVector<int>' is registered using qRegisterMetaType().)
QObject::connect: Cannot queue arguments of type 'QVector<int>'
(Make sure 'QVector<int>' is registered using qRegisterMetaType().)
QObject::connect: Cannot queue arguments of type 'QVector<int>'
(Make sure 'QVector<int>' is registered using qRegisterMetaType().)
QObject::connect: Cannot queue arguments of type 'QVector<int>'
(Make sure 'QVector<int>' is registered using qRegisterMetaType().)
QObject::connect: Cannot queue arguments of type 'QVector<int>'
(Make sure 'QVector<int>' is registered using qRegisterMetaType().)


Se eu deixar somente a label, ele não da os erros acima, porem quando adciono a tabela da erro.

Inseri duas imagens da tela também para tentar ilustrar melhor o que está acontecendo.

Vocês poderiam me ajudar a resolver este problema? desde já muito obrigado.


  


2. Re: Erro programa Python - Pyqt5

Diego Mendes Rodrigues
diegomrodrigues

(usa Ubuntu)

Enviado em 20/05/2021 - 13:47h

Pesquisando na internet esse erro, os desenvolvedores informam que você deve fazer modificações da GUI na thread principal.

"Basic rule of Qt and PyQt, the GUI is never modified from another thread other than the main thread, the main thread is called the GUI thread!!!!"

Atenciosamente,
Diego M. Rodrigues


3. Re: Erro programa Python - Pyqt5

Gabriel de Souza Menezes
steeldark

(usa Outra)

Enviado em 20/05/2021 - 21:17h


diegomrodrigues escreveu:

Pesquisando na internet esse erro, os desenvolvedores informam que você deve fazer modificações da GUI na thread principal.

"Basic rule of Qt and PyQt, the GUI is never modified from another thread other than the main thread, the main thread is called the GUI thread!!!!"

Atenciosamente,
Diego M. Rodrigues


Sim, obrigado por responder, eu postei em um outro forum o rapaz me explicou que para isso eu teria que fazer uma classe e usar o sistema de trhead do proprio pyqt, como eu sou iniciante eu estou procurando sobre isso para aprender, mas ele postou um exemplo bem bacana que faz o que eu queria usando a classe. no entanto ele não soube explicar por que dava o erro. obrigado assim mesmo. assim que eu aprender a fazer como ele falou eu posto aqui caso alguem tbm esteja com mesmo problema. mas já adiantando que que ele usou a classe MyApp






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts