class Previewer(QWidget): instance = 0 def __init__(self, parent=None, index = -1): super(Previewer, self).__init__(parent) self.parent = parent self.index = index self.handle = QWebEngineView() self.handle.setGeometry(100, 100, 350, 400) self.handle.setWindowTitle("Helper") self.handle.setWindowIcon(QIcon('icon.png')) if self.index == 0: link = "help\\read_time.html" elif self.index == 1: link = "help\\set_time.html" elif self.index == 2: link = "help\\read_date.html" elif self.index == 3: link = "help\\set_date.html" elif self.index == 4: link = "help\\set_cursor.html" elif self.index == 5: link = "help\\char_input.html" elif self.index == 6: link = "help\\char_output.html" elif self.index == 7: link = "help\\disc_space.html" else: link = "help\\index.html" page = open(link, 'r').read() self.page = QWebEnginePage() self.page.setHtml(page) self.handle.setPage(self.page) self.handle.show() def zamknij(self): Previewer.instance -= 1 self.handle.destroy()
class Main(QWidget, Ui_Form): def __init__(self, parent=None): super(Main, self).__init__(parent) self.setupUi(self) self.setWindowTitle("小助手") print("初始化") self.dataS = "" self.dataR = "" self.ishtml = 0 self.record = "" #设置文本框的只读模式 self.text_showFile.setReadOnly(True) self.btn_send.setEnabled(False) self.thread = Worker() # 线程实例化 self.ser = serial.Serial() #串口实例化 self.setSlot() self.setqss() def setqss(self): from qss import QSSRead # QSSRead.setStyle("QSS.qss", self) def setSlot(self): print("信号槽的初始化") self.btn_searchPort.clicked.connect(self.searchPort) #查找串口号 self.btn_start.clicked.connect(self.start) #启动线程 self.btn_end.clicked.connect(self.end) #关闭线程 self.btn_claerT1.clicked.connect(self.clearT1) #清除日志 self.btn_clearS.clicked.connect(self.clearS) #清除发送区数据 self.btn_openFile.clicked.connect(self.openFile) #打开文件 self.btn_sendFile.clicked.connect(self.sendFile) #发送文件的内容 self.btn_send.clicked.connect(self.send) #发送内容 self.thread.sinOut1.connect(self.showRecord) #显示串口信息到接收区 self.thread.sinOut2.connect(self.showHTML) #加载HTML self.radio_show.toggled.connect( lambda: self.setHTML(self.radio_show)) #暂时保留,功能没弄 # self.text_showR.setPlainText("123")设定值 # self.text_showS.setPlainText("456") #测试成功 #查找串口号 def searchPort(self): ch = list(serial.tools.list_ports.comports()) print(ch) if len(ch) == 0: QMessageBox.about(self, "错误", "无法识别串口") else: self.com_showPort.clear() for ch1 in ch: sh = str(ch1) lens = sh.find('-') self.com_showPort.addItem(sh[0:lens - 1]) # 启动线程、 def start(self): print("线程正常启动") try: self.thread.working = True self.thread.start() self.btn_searchPort.setEnabled(False) self.btn_openFile.setEnabled(False) self.btn_start.setEnabled(False) self.btn_send.setEnabled(True) except: QMessageBox.about(self, "错误", "启动失败") #关闭线程 def end(self): print() #换行 print("成功关闭线程") try: self.thread.working = False self.btn_searchPort.setEnabled(True) self.btn_openFile.setEnabled(True) self.btn_start.setEnabled(True) self.btn_send.setEnabled(False) except: QMessageBox.about(self, "错误", "关闭线程出错") #清除接收区数据 def clearT1(self): self.text_showRecord.clear() self.record = "" # 清除发送区数据 # 清除发送区数据 def clearS(self): print("成功清除发送区数据") self.text_showS.clear() #打开文件 def openFile(self): print("成功打开文件") dlg = QFileDialog() dlg.setFileMode(QFileDialog.AnyFile) dlg.setFilter(QDir.Files) if dlg.exec_(): self.fileNames = dlg.selectedFiles() self.text_showFile.setPlainText(self.fileNames[0]) try: print(2) f = open(self.fileNames[0], 'r', encoding='UTF-8') print(3) self.dataS = f.read() print(self.dataS) print(1) f.close() # self.text_showS.setPlainText(self.dataS) except: QMessageBox.about(self, "错误", "出现异常") print("出现异常") f.close() # with open(r"E:\pycharm\untitled\201902\24\RevisePort\12.jpg","wb") as f: # f.write(self.dataS) # fname, _=QFileDialog.getOpenFileName(self,"","C:\\","Image files(*.jpg *.gif)") # print("fname:",fname) #发送文件 def sendFile(self): # self.dataS=self.text_showS.toPlainText() # print("长度:",len(self.dataS)) # self.dataS=b"</html>" if len(self.dataS) > 0: # print(type(self.dataS)) # print(self.dataS) self.record += "正在发送中\n" self.text_showRecord.setPlainText(self.record) print("正在发送中") # self.size=self.ser.write(self.dataS) str = self.dataS.encode('UTF-8') #发送文本文件 print("文本长度", len(self.dataS)) print("发送长度", len(str)) self.size = self.ser.write(str) self.record += "发送完成,发送的大小{}:\n".format(len(str)) self.text_showRecord.setPlainText(self.record) print("Size:", self.size) else: QMessageBox.about(self, "错误", "发送内容为空") # 接收区显示串口信息 def send(self): self.dataS = self.text_showS.toPlainText() if len(self.dataS) > 0: # print(type(self.dataS)) # print(self.dataS) print("正在发送中") # self.size=self.ser.write(self.dataS) strs = self.dataS.encode('UTF-8') print("文本长度", len(self.dataS)) print("发送长度", len(strs)) self.size = self.ser.write(strs) print("Size:", self.size) def showRecord(self, sh): # self.text_showR.clear() self.record += sh # if sh. self.text_showRecord.setPlainText(self.record) def setHTML(self, btn): if btn.isChecked() == True: print("ON") else: print("OFF") def showHTML(self): try: if self.ishtml == 0: self.brower = QWebEngineView() self.vbox = QVBoxLayout(self.tab_2) self.vbox.addWidget(self.brower) self.ishtml = 1 else: self.brower.destroy() self.record += "正在加载HTML文件,请等候......\n" self.text_showRecord.setPlainText(self.record) # self.brower.setHtml(html) file = r"D:/HTML/test.html" self.brower.load(QUrl(file)) self.record += "加载HTML文件完成\n" self.text_showRecord.setPlainText(self.record) except Exception as e: print('Error:', e) self.record += "加载失败\n" self.text_showRecord.setPlainText(self.record)