1. 安装软件包

pip install PyQt5
pip install pyqt5-tools

2. 安装Qtdesigner

sudo apt-get install qt5-default qttools5-dev-tools
sudo apt-get install qt5-default qtcreator

3.pycharm中配置 external tools

在这里插入图片描述

4. Tools – external tools 打开 Qtdesigner

在这里插入图片描述

5.设计完成后转换为py文件

pyuic5 -o hsi.py hsi.ui

6.运行获得的py文件就会出现设计的界面了

用到的语句总结

  • textEdit 字符获取和显示
        str1 = ui.textEdit.toPlainText()
        ui.textEdit_2.setText(str1)
  • textEdit 追加字符串
str='要显示的字符串'
self.textEdit_2.append(str)
  • push button
        self.pushButton_2.setText(_translate("MainWindow", "浏览"))
        self.pushButton_2.clicked.connect(lambda: self.whichbtn(self.pushButton_2))
        self.pushButton_2.clicked.connect(self.btnstate)
        
    def btnstate(self):
        # isChecked():判断按钮的状态,返回值为True或False
        if self.pushButton_2.isChecked():
            print('button pressed')
        else:
            print('button released')

    def whichbtn(self, btn):
        # 输出被点击的按钮
        print('clicked button is ' + self.pushButton_2.text())

  • QPlainTextEdit
QPlainTextEdit.setPlainText()       #设置普通文本
QPlainTextEdit.insertPlainText()    #插入普通文本
QPlainTextEdit.appendPlainText()    #追加普通文本
  • 文件浏览
 1. 选取文件夹 QFileDialog.getExistingDirectory()  #返回字符串
 2. 选择文件 QFileDialog.getOpenFileName()   #返回元组
 3. 选择多个文件 QFileDialog.getOpenFileNames()
 4. 选择保存文件 QFileDialog.getSaveFileName()

多线程
  • 多线程-在单个程序中同时运行多个不同的线程完成不同的工作,称为多线程
  • 线程-轻量级进程,指正在执行程序的最小单元,一个进程当中至少必须有一个线程(主线程),在程序中,线程是独立的,可运行的流
  1. 每个线程有自己的堆栈,自己的程序计数器,自在相同己的局部变量,体现了线程的独立性
  2. 在相同的父进程下的所有线成共享进程内所有资源,可以实现线程间的消息互通
  3. 多个线程之间可以并发执行,互不影响

创建方式

  1. _thread
  2. threading
    使用threading 模块的Thread类的构造器创建新的线程
    继承threading 模块的Thread类创建线程类

示例1

import threading
#1.调用Thread类的构造器创建线程的方法,在创建线程对象时使用target参数指定函数线程的执行体
#2.调用线程的start方法启动该线程

def loop(x):
	print('thread {}  is running...'.format(threading.current_thread().name))
	for i in range(x):
		print('thread {}  >>> {}'.format(threading.current_thread().name,i))
if __name__=='__main__':
	print('thread {}  is running...'.format(threading.current_thread().name))
	t = threading.Thread(target=loop,args=(10,))
	t.start()

示例2

import threading
class MyThread (threading.Thread):
	def run(self):
		print('thread {}  is running...'.format(threading.current_thread().name))
	for i in range(10):
		print('thread {}  >>> {}'.format(threading.current_thread().name,i))

if __name__=='__main__':
	print('thread {}  is running...'.format(threading.current_thread().name))	
	t=MyThread()
	t.run()
	print('运行结束')

两个子线程示例
在这里插入图片描述
阻塞主线程

t1.join()
t2.join()

主线程结束后立即结束守护线程

t1.SetDaemon(daemonic=True)
t2.SetDaemon(daemonic=True)

pyqt多进程 QThraed

  1. 定义子进程的功能
class WorkThread(QThread):
    def __int__(self):
        super(WorkThread, self).__init__()

    def run(self):
        while 1:
            time.sleep(1)
            print('123')
  1. 创建实例, 打开子进程
self.workThread = WorkThread()
self.workThread.start()

警告: 在类内定义实例时一定要加self, 不然当函数结束后,它的生命周期也都结束了,但是这个线程里的程序很有可能还没有运行完,所以会报错
QThread:Destroyed while thread is still running

传递消息的例子

定义
    class WorkThread(QThread):
        trigger = pyqtSignal(str)
        def __int__(self):
            super(WorkThread, self).__init__()

        def run(self):
            ui.data_utils()
######################################################################
调用
        self.workThread = WorkThread()
        self.workThread.start()
        self.workThread.trigger.connect(self.print_in_textEdit)

    def print_in_textEdit(self, msg):
        self.plainTextEdit.appendPlainText(msg)
        self.workThread.exit()

keras 保存模型结构


from tensorflow.keras.utils import plot_model  
import pydotplus  
plot_model(lstm_test_model,to_file='lstm_test_model.png',show_shapes=True)


版权声明:本文为weixin_42840360原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_42840360/article/details/116308776