Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Показать сообщение отдельно
alex925
2664 / 2276 / 627
Регистрация: 19.03.2012
Сообщений: 8,826
06.02.2018, 21:55

Pyqt5 потоки

06.02.2018, 21:55. Просмотров 505. Ответов 5
Метки (Все метки)

Ответ

manibashkas, не знаю, что тебе не понятно, ну вот ещё 1 пример по работе с потоками. Все, что тебе нужно изучить касательно работы с потоками в pyqt это работа с сигналами и слотами, все.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
"""
Пример передачи в сигнале различных типов данных
"""
import sys
import time
import threading
 
from PyQt5 import QtWidgets, QtCore
 
 
def thread(my_func):
    """
    Запускает функцию в отдельном потоке
    """
    def wrapper(*args, **kwargs):
        my_thread = threading.Thread(target=my_func, args=args, kwargs=kwargs)
        my_thread.start()
    return wrapper
 
@thread
def processing(signal):
    """
    Эмулирует обработку (скачивание) каких-то данных
    """
    res = [i for i in 'hello']
    time.sleep(5)
    signal.emit(res)  # Посылаем сигнал в котором передаём полученные данные
 
 
class MyWidget(QtWidgets.QWidget):
    my_signal = QtCore.pyqtSignal(list, name='my_signal')
 
    def __init__(self, parent=None):
        super(MyWidget, self).__init__(parent)
        self.mainLayout = QtWidgets.QHBoxLayout()
        self.setLayout(self.mainLayout)
 
        self.button = QtWidgets.QPushButton("Emit your signal!", self)
        self.mainLayout.addWidget(self.button)
 
        # При нажатии на кнопку запускаем обработку данных
        self.button.clicked.connect(lambda: processing(self.my_signal))
 
        # Обработчик сигнала
        self.my_signal.connect(self.mySignalHandler, QtCore.Qt.QueuedConnection)
 
    def mySignalHandler(self, data):  # Вызывается для обработки сигнала
        print(data)
 
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = MyWidget()
    window.show()
    app.exec_()


Вернуться к обсуждению:
Pyqt5 потоки
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2018, 21:55

Не работает PyQt5
Здравствуйте. Недавно обновлял python - удалил все, что связано с python и...

Книги по PyQt5 и Qt
Посоветуйте книги по PyQt5 и Qt или какие-то уроки так хочу освоить...

Не подключается PyQt5
Доброго времени суток. Что сделать с этой ошибкой? Попробовал установить модуль...

0
Другие темы раздела
Python PyQt5 + matplotlib исправление ошибки, animation http://www.cyberforum.ru/python-graphics/thread2185153.html
Здравствуйте. Нужна помощь с установлением анимированного графика matplotlib в gui. Есть гуи, которая состоит из двух label и двух line edit упакованные в layout, а так же еще один layout для...
Python Как сделать так, что бы в "Listbox" попал материал --12Х18Н10Т Я в питоне ничего не знаю, и вот сам пытаюсь сделать программу для работы С кнопками проблем нет, справился вроде. Есть вопрос следующий Я хочу что бы в проге было примерно следующее: Выбираешь... http://www.cyberforum.ru/python-graphics/thread2184524.html
Python Куда пропал метод?
Здравтсвуйте, столкнулся с очень странной проблемой. Вот по этой ссылке есть такой код: from PyQt5.QtCore import QObject, pyqtSignal class Foo(QObject): # Define a new signal called...
Python Как переместить курсор в начало поля LineEdit при использовании маски
Прошу помощи. Использую маску в поле LineEdit. При установке мышкой курсора в это поле, он устанавливается в конец маски. Как его переместить в начало поле ввода? При этом через Tab все работает...
Python бинарное чтение и запись http://www.cyberforum.ru/python-graphics/thread2182894.html
добрый день, помогие исправить ошибки, надо распарсить бинарный файл по сигнатурам от FFD8 до FFD9 и каждый кусок сохранить в отдельный файл. import sys def load_pictures(_path_input,...
Python Таймер на функция по событию Не подскажите как поставить таймер на функцию по событию, что бы функция выполнялась каждые 5 сек. после нажатия на кнопку. Сейчас она у меня сразу запускается. timer = QTimer() ... подробнее
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru