Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Передача информации в основной поток PyQt4 [RSS Feed]

#1 Июль 20, 2014 13:20:33

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2749
Репутация: +  184  -
Профиль   Отправить e-mail  

Передача информации в основной поток PyQt4

UI файл в студию!



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#2 Июль 20, 2014 13:29:10

Razor
Зарегистрирован: 2012-09-11
Сообщения: 127
Репутация: +  2  -
Профиль   Отправить e-mail  

Передача информации в основной поток PyQt4

Rodegast
UI файл в студию!
Постом ниже я переписал пример.

Офлайн

#3 Июль 20, 2014 13:50:23

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2749
Репутация: +  184  -
Профиль   Отправить e-mail  

Передача информации в основной поток PyQt4

Уже посмотрел и надо сказать что подобных приколов я давно не видел… Ты хоть понимаешь что у тебя с каждым приходом сигнала окно заново создаётся? Вот пример того как надо работать с потоком:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from PyQt4 import QtCore, QtGui, uic
# Класс, отвечающий за GUI
class GeneralWindow(QtGui.QWidget):
	def __init__(self, parent=None):
		QtGui.QWidget.__init__(self, parent)
		Form, Base = uic.loadUiType("test_form.ui")
		self.ui = Form()
		self.ui.setupUi(self)
		self.ui.button.clicked.connect(self.work)
		
		self.potok = Potok()
		QtCore.QObject.connect(self.potok, QtCore.SIGNAL("PotokValue(PyQt_PyObject)"), self.labels_output)
	def work(self):
		self.potok.start()
	# Функция, отвечающая за вывод в GUI
	def labels_output(self, text):
		print text  # Выведет текст, заданный во вводе
		self.ui.label.setText(str(text))
class Potok(QtCore.QThread):
	
	def __init__(self):
		QtCore.QThread.__init__(self)
	
	def run(self):
		for value in xrange(8):
			self.emit(QtCore.SIGNAL("PotokValue(PyQt_PyObject)"), value)
if __name__ == "__main__":
	import sys
	app = QtGui.QApplication(sys.argv)
	window = GeneralWindow()
	window.show()
	sys.exit(app.exec_())



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#4 Июль 20, 2014 14:58:53

Razor
Зарегистрирован: 2012-09-11
Сообщения: 127
Репутация: +  2  -
Профиль   Отправить e-mail  

Передача информации в основной поток PyQt4

Rodegast
Ты хоть понимаешь что у тебя с каждым приходом сигнала окно заново создаётся?
Нет, понятия не имел.

Rodegast
Вот пример того как надо работать с потоком
Ничего не пойму. Так - работает. Перенес к себе - не работает. Вы не могли бы взглянуть на исходный код (его там чуть поболее будет)?

https://www.dropbox.com/sh/kumvqlo98nmycih/AABkeqZ6W9-G9tCHRSGnr5u9a

Основные два файла - GUI_For_Scrapy и Spider_Find_Domains. Первый - логика GUI из Form.ui, а второй - паук Scrapy. Пометил комментариями и решеточками некоторые места для лучшего понимания.

Потратил на решение проблемы уже очень много времени. Помогите, коллега.

Отредактировано Razor (Июль 20, 2014 14:59:37)

Офлайн

#5 Июль 20, 2014 16:01:29

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2749
Репутация: +  184  -
Профиль   Отправить e-mail  

Передача информации в основной поток PyQt4

Выкинь SimpleThread и работай с потоком так как в моём примере.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#6 Июль 20, 2014 16:24:34

Razor
Зарегистрирован: 2012-09-11
Сообщения: 127
Репутация: +  2  -
Профиль   Отправить e-mail  

Передача информации в основной поток PyQt4

Rodegast
Выкинь SimpleThread и работай с потоком так как в моём примере.
Выкидывал - не помогло. Может я как то неверно связываю два этих класса?

Офлайн

  • Начало
  • » GUI
  • » Передача информации в основной поток PyQt4[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version