Задать вопрос
AlexDarkStalker
@AlexDarkStalker
Хочу научится программировать на Python

Почему строки не не выводятся поочередно?

В общем, пишу я например, 'привет' и приложение ищет похожую строку в файле и выводит следующую, а приложение место того, чтобы вывести сначала 'привет', а потом найденную в файле строку, но оно ждет, пока не найдет нужную строку, а потом уже одновременно выводит, 'привет' и нужную строку.
Мне нужно вывести привет прям при нажатии

import sys
from bot import *
from PyQt5 import QtCore, QtGui, QtWidgets, Qt
import os
import time


class MyWin(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # Событие нажатия на кнопку
        self.ui.pushButton.clicked.connect(self.MyFunction)

    # Функция которая выполняется при нажатии на кнопку
    def MyFunction(self):
        global dannie
        dannie = self.ui.textEdit.toPlainText()
        self.ui.textEdit.setText("")
        self.ui.textBrowser.append(dannie)
        time.sleep(1)
        self.Dialog()

    def Dialog(self):
        try:
            with open('C:\set.txt') as f:
                lines = [x.rstrip() for x in f.readlines()]
                line = (lines[lines.index(dannie) + 1])
                self.ui.textBrowser.append(line)
        except ValueError:
            self.ui.textBrowser.append('Я тебя не понимаю')


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    myapp = MyWin()
    myapp.show()
    sys.exit(app.exec_())
  • Вопрос задан
  • 161 просмотр
Подписаться 1 Средний 4 комментария
Решения вопроса 1
InterVi
@InterVi
Fullstack Developer
Этот код ужасен. Автогенерация UI, ну ладно, чёрт с ней. Но остальное...
def MyFunction(self):
def Dialog(self):

Соблюдай PEP8, так нельзя. Не потому что кодеры такие злые, а потому что ты сам потом запутаешься в таких именах. Функции и методы пишутся прописными буквами и с нижним подчёркиванием. Вот так:
def my_function(self):
def dialog(self):

Не надо именовать их как классы. Почему именно Dialog? Это вводит в заблуждение, будто бы должен открываться диалог выбора файла, когда как там просто чтение.
global dannie
dannie = self.ui.textEdit.toPlainText()
self.ui.textEdit.setText("")
self.ui.textBrowser.append(dannie)

А так ли тут нужна глобальная переменная? Ставить пустоту не надо, есть метод clear.
time.sleep(1)
self.Dialog()

Тут-то всё и замирает. Нужно применить QThread, вот пример.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы