qt.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import sys
  2. from PyQt5.QtWidgets import *
  3. from PyQt5.QtGui import QIcon
  4. from PyQt5.QtCore import *
  5. import time
  6. from record import Record
  7. class RecordWorker(QThread):
  8. textB = pyqtSignal(str)
  9. def __init__(self):
  10. super().__init__()
  11. self.power = False
  12. self.text = ''
  13. self.record = Record()
  14. def run(self):
  15. self.power = True
  16. # self.textB.emit("start !!\n")
  17. while self.power == True:
  18. self.record.record_unit(self.textB.emit)
  19. self.record.record_unit(self.textB.emit)
  20. self.textB.emit("\nend !!\n")
  21. def stop(self):
  22. self.power = False
  23. # class MyApp(QMainWindow):
  24. class MyApp(QWidget):
  25. def __init__(self):
  26. super().__init__()
  27. self.text = ''
  28. self.blank_cnt = 0
  29. self.blank_max = 2
  30. self.initUI()
  31. self.t1 = RecordWorker()
  32. self.t1.textB.connect(self.set_tb) ## 시그널 슬롯 등록
  33. self.btn1.clicked.connect(self.thread_start)
  34. self.btn2.clicked.connect(self.thread_stop)
  35. def initUI(self):
  36. self.setWindowTitle('BTS')
  37. self.setWindowIcon(QIcon('labs_icon.jpg'))
  38. self.btn1 = QPushButton('Run', self)
  39. self.btn2 = QPushButton('Stop', self)
  40. self.tb = QTextEdit()
  41. self.tb.setReadOnly(True)
  42. self.tb.setAcceptRichText(True)
  43. self.vbox = QVBoxLayout()
  44. self.vbox.addWidget(self.btn1, 0)
  45. self.vbox.addWidget(self.btn2, 1)
  46. self.vbox.addWidget(self.tb, 2)
  47. self.setLayout(self.vbox)
  48. self.setGeometry(300, 300, 800, 500)
  49. self.show()
  50. def thread_start(self):
  51. self.t1.start()
  52. def thread_stop(self):
  53. self.t1.stop()
  54. @pyqtSlot(str)
  55. def set_tb(self, content):
  56. if len(content) == 0 and self.text[-1] != "\n":
  57. self.blank_cnt += 1
  58. if self.blank_cnt >= self.blank_max:
  59. self.blank_cnt = 0
  60. self.text += '\n'
  61. self.tb.setText(self.text)
  62. else:
  63. self.text += content
  64. self.tb.setText(self.text)
  65. if __name__ == '__main__':
  66. app = QApplication(sys.argv)
  67. ex = MyApp()
  68. sys.exit(app.exec_())