1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- import sys
- from PyQt5.QtWidgets import *
- from PyQt5.QtGui import QIcon
- from PyQt5.QtCore import *
- import time
- from record import Record
- class RecordWorker(QThread):
- textB = pyqtSignal(str)
- def __init__(self):
- super().__init__()
- self.power = False
- self.text = ''
- self.record = Record()
-
- def run(self):
- self.power = True
- # self.textB.emit("start !!\n")
- while self.power == True:
- self.record.record_unit(self.textB.emit)
- self.record.record_unit(self.textB.emit)
- self.textB.emit("\nend !!\n")
- def stop(self):
- self.power = False
- # class MyApp(QMainWindow):
- class MyApp(QWidget):
- def __init__(self):
- super().__init__()
- self.text = ''
- self.blank_cnt = 0
- self.blank_max = 2
- self.initUI()
- self.t1 = RecordWorker()
- self.t1.textB.connect(self.set_tb) ## 시그널 슬롯 등록
- self.btn1.clicked.connect(self.thread_start)
- self.btn2.clicked.connect(self.thread_stop)
- def initUI(self):
- self.setWindowTitle('BTS')
- self.setWindowIcon(QIcon('labs_icon.jpg'))
- self.btn1 = QPushButton('Run', self)
- self.btn2 = QPushButton('Stop', self)
- self.tb = QTextEdit()
- self.tb.setReadOnly(True)
- self.tb.setAcceptRichText(True)
- self.vbox = QVBoxLayout()
- self.vbox.addWidget(self.btn1, 0)
- self.vbox.addWidget(self.btn2, 1)
- self.vbox.addWidget(self.tb, 2)
- self.setLayout(self.vbox)
- self.setGeometry(300, 300, 800, 500)
- self.show()
- def thread_start(self):
- self.t1.start()
- def thread_stop(self):
- self.t1.stop()
- @pyqtSlot(str)
- def set_tb(self, content):
- if len(content) == 0 and self.text[-1] != "\n":
- self.blank_cnt += 1
- if self.blank_cnt >= self.blank_max:
- self.blank_cnt = 0
- self.text += '\n'
- self.tb.setText(self.text)
- else:
- self.text += content
- self.tb.setText(self.text)
-
- if __name__ == '__main__':
- app = QApplication(sys.argv)
- ex = MyApp()
- sys.exit(app.exec_())
|