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()
多线程
- 多线程-在单个程序中同时运行多个不同的线程完成不同的工作,称为多线程
- 线程-轻量级进程,指正在执行程序的最小单元,一个进程当中至少必须有一个线程(主线程),在程序中,线程是独立的,可运行的流
- 每个线程有自己的堆栈,自己的程序计数器,自在相同己的局部变量,体现了线程的独立性
- 在相同的父进程下的所有线成共享进程内所有资源,可以实现线程间的消息互通
- 多个线程之间可以并发执行,互不影响
创建方式
- _thread
- 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
- 定义子进程的功能
class WorkThread(QThread):
def __int__(self):
super(WorkThread, self).__init__()
def run(self):
while 1:
time.sleep(1)
print('123')
- 创建实例, 打开子进程
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 版权协议,转载请附上原文出处链接和本声明。