Форум сайта python.su
0
scidamа ты знаешь как сделать так чтобы потоки могли взаимодействовать между собой. Допустим имеется управляющий поток, в управляющем потоке есть переменная a = input(), есть второй поток функция, которая ждет ввод с клавиатуры и полученное число складывает допусим на 5.
Это все меняет. У меня нет достаточного опыта разработки GUI, а установить и попобовать сейчас Pyqt у меня нет возможности. Однако, сразу могу сказать, что много странных вещей:1) странно, что класс Gui определен внутри __name__ == ‘__main__’; Вы планируете использовать программу как модуль, если нет, то вообще не нужно это условие __name__ == ‘__main__’2) Gui класс – а зачем он, если у него нет методов; вместо класса Gui можно и так: gui = {'app_label': None, ‘win’: None, …} т.е. использовать просто словарь; скорее всего, конечно, класс нужен, с подходящими методами; но в рамках данной структуры программы – он не нужен. 3)
Офлайн
8
Посмотрите здесь: https://nikolak.com/pyqt-threading-tutorial/ мне кажется это пример по проблеме схожей с Вашей.
Офлайн
294
Darkhanпочему? Они же читают а не пишут туда. Вторых есть блокировки. В третьих данные можно предавать в виде аргументов а не брать “втупую”
это понятно, но вот оба потока не могут брать данные с одной переменной.
import sys, time from threading import Thread from PyQt4.QtCore import * from PyQt4.QtGui import * class Gui(QWidget): def __init__(self): super().__init__() self.btn = QPushButton(self,text='Click') self.btn.clicked.connect(self.btn_click) self.loginLabel = QLabel(self,text='Login:') self.passwdLabel = QLabel(self,text='Password:') self.login = QLineEdit(self) self.passwd = QLineEdit(self) self.layout = QGridLayout(self) self.layout.addWidget(self.loginLabel, 0, 0) self.layout.addWidget(self.login, 0, 1) self.layout.addWidget(self.passwdLabel, 1, 0) self.layout.addWidget(self.passwd, 1, 1) self.layout.addWidget(self.btn, 2, 0,1,2) self.show() def btn_click(self): login = self.login.text() passwd = self.passwd.text() if login and passwd: p = Thread(target=self.auth, args=(login, passwd)) p.start() else: print('login or password empty') def auth(self,login, passwd): for i in range (10): print( 'trying connect to server with login: {} passwd: {}'.format(login, passwd)) time.sleep(1) print('connection established with login: {} passwd: {}'.format(login, passwd)) if __name__ == '__main__': myApp = QApplication(sys.argv) gui = Gui() sys.exit(myApp.exec_())
[code python][/code]
Отредактировано PEHDOM (Апрель 5, 2017 19:48:20)
Офлайн
0
PEHDOMспасибо большое!!!! ты лучший, именно твой пример помог мне решить мою задачи. Спасибо большое!!!! блин реально выручил, столько радости. Дай Бог тебе всего самого хорошего что есть на нашем свете!!!
Офлайн