Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import logging
- import sys
- from PyQt5 import QtCore, QtGui, QtWidgets
- from datetime import datetime
- class Ui_MainWindow(object):
- def setupUi(self, MainWindow):
- MainWindow.setObjectName("MainWindow")
- MainWindow.resize(900, 400)
- self.centralwidget = QtWidgets.QWidget(MainWindow)
- self.centralwidget.setObjectName("centralwidget")
- self.pushButton = QtWidgets.QPushButton(self.centralwidget)
- self.pushButton.setGeometry(QtCore.QRect(110, 240, 75, 23))
- self.pushButton.setObjectName("pushButton")
- self.plainTextEdit = QtWidgets.QPlainTextEdit(self.centralwidget)
- self.plainTextEdit.setGeometry(QtCore.QRect(10, 10, 291, 131))
- self.plainTextEdit.setObjectName("plainTextEdit")
- self.label = QtWidgets.QLabel(self.centralwidget)
- self.label.setGeometry(QtCore.QRect(130, 180, 47, 13))
- self.label.setObjectName("label")
- MainWindow.setCentralWidget(self.centralwidget)
- self.retranslateUi(MainWindow)
- QtCore.QMetaObject.connectSlotsByName(MainWindow)
- def retranslateUi(self, MainWindow):
- _translate = QtCore.QCoreApplication.translate
- MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
- self.pushButton.setText(_translate("MainWindow", "PushButton"))
- self.label.setText(_translate("MainWindow", "TextLabel"))
- class QTextEditLogger(logging.Handler):
- def __init__(self, parent):
- super().__init__()
- self.PVELogs = QtWidgets.QPlainTextEdit(parent.centralwidget)
- self.PVELogs.setGeometry(QtCore.QRect(40, 50, 541, 491))
- font = QtGui.QFont()
- font.setFamily("Consolas")
- font.setPointSize(10)
- self.PVELogs.setFont(font)
- self.PVELogs.setStyleSheet("background-color: rgb(30, 30, 30); color: rgb(255, 255, 255);")
- self.PVELogs.setReadOnly(True)
- self.PVELogs.setPlainText("")
- self.PVELogs.setObjectName("PVELogs")
- parent.layout.addWidget(self.PVELogs, 1, 0)
- self.PVPLogs = QtWidgets.QPlainTextEdit(parent.centralwidget)
- self.PVPLogs.setGeometry(QtCore.QRect(610, 50, 541, 491))
- font = QtGui.QFont()
- font.setFamily("Consolas")
- font.setPointSize(10)
- self.PVPLogs.setFont(font)
- self.PVPLogs.setStyleSheet("background-color: rgb(30, 30, 30); color: rgb(255, 255, 255);")
- self.PVPLogs.setReadOnly(True)
- self.PVPLogs.setPlainText("")
- self.PVPLogs.setObjectName("PVPLogs")
- parent.layout.addWidget(self.PVPLogs, 1, 1)
- def emit(self, record):
- msg0 = self.format(record)
- self.PVELogs.appendPlainText(msg0)
- msg1 = self.format(record)
- self.PVPLogs.appendPlainText(msg1)
- class ExampleApp(QtWidgets.QMainWindow, Ui_MainWindow):
- def __init__(self):
- super().__init__()
- self.setupUi(self)
- self.layout = QtWidgets.QGridLayout(self.centralwidget)
- self.layout.addWidget(self.label, 2, 0)
- self.layout.addWidget(self.pushButton, 2, 1)
- logTextBox = QTextEditLogger(self)
- now = datetime.now()
- gettime = now.strftime("%d/%m/%Y %H:%M:%S")
- logTextBox.setFormatter(logging.Formatter(f'{gettime} %(message)s'))
- logging.getLogger().addHandler(logTextBox)
- logging.getLogger().setLevel(logging.DEBUG)
- self.plainTextEdit.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse)
- self.thread = WorkThread()
- self.thread.threadSignal.connect(self.func2)
- self.pushButton.clicked.connect(self.func1)
- logging.debug("Это сообщение об отладке")
- logging.info(u'This is an info message')
- def func1(self):
- #создаем поток
- self.thread.start()
- def func2(self, value):
- logging.info("Передано из потока -> {}".format(value))
- class WorkThread(QtCore.QThread):
- ''' Потоковая задача '''
- threadSignal = QtCore.pyqtSignal(int)
- def __init__(self):
- super().__init__()
- def run(self):
- for i in range(10):
- self.msleep(200)
- self.threadSignal.emit(i)
- if __name__=='__main__':
- app = QtWidgets.QApplication(sys.argv)
- window = ExampleApp()
- window.show()
- sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement