python与上位机开发day04

2024-04-30 11:44
文章标签 python 开发 上位 day04

本文主要是介绍python与上位机开发day04,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

模块和包、异常、PyQt5

一、模块和包

1.1 模块

  • Python中模块就是一个.py文件,模块中可以定义函数变量
  • 模块可以被其他模块引用
1.1.1 导入模块
"""
导入格式1:     import 模块名
使用格式:     模块名.函数  模块名.类名  模块名.变量名"""
import utilsprint(utils.name)
print(utils.sum(1, 3))
print(utils.Person("zhangsi", 18))
# 导入格式2:     from 模块名 import 需使用的函数、类、变量
# 使用格式:     函数、类、变量   无需通过模块名引用
from utils import name, sum, Personprint('---' * 30)
print(name)
res = sum(1, 8)
print(res)
print(Person("mike", 20))
# 导入格式3:     from 模块名 import *
# 使用格式:     函数、类、变量   无需通过模块名引用from utils import *
print(name)
print(sum(1,9))
1.1.2 导入冲突
"""
通过as重命名,可以解决冲突
from 模块名 import 变量 as 别名1, 函数 as 别名2, 类 as 别名3
"""from utils import name as uname,sum as usum,Person as uPerson
from sum import name as sname,sum as ssum
print(uname)
print(sname)
print(usum(1,9))
print(ssum(8,1))
1.1.3 __name__作用说明
  • 把导入模块不被执行的代码放在if __name__ == '__main__'里面
# 导入模块,会执行1次文件里面的代码def sum(a,b):return a+b#程序的入口
if __name__ == '__main__':res = sum(1,8)print(res)

1.2 包

  • 包是一个特殊的文件夹,文件夹里包含一个__init__.py

    • 模块主要用于管理代码
    • 包主要用于管理模块
    • __init__.py主要写一下初始化的代码或导模块的语句,如果没有这部分需求,此文件可以没有
  • 包的创建

    • 在 PyCharm 中支持直接创建包, 工程根目录上鼠标
      右键 -> New -> Python Package
1.2.1 导入包中模块
"""
说明:导入方式有很多,后面使用的时候,先查先用即可
方式1:
导入格式:   import 包名.模块名包名就是文件夹名    模块名就是文件里某个文件名字
使用格式:   包名.模块名.工具名   (类名、函数、变量)方式2:
导入格式:   from 包名.模块名 import 工具名
使用格式:   工具名   (类名、函数、变量)
"""
import pk.calac
print(pk.calac.name)
print(pk.calac.sum(10,9))print("=========import 包名.模块名==========")import pkg3.calac
print(pkg3.calac.sum(9,5))print("========= from 包名.模块名 import 工具名==========")
from pkg3.calac import *
print(name)
print(sum(8,2))print("========= from")
from pkg3.calac import name,sum,Personprint(name)
print(sum(8,2))
print("=========")

1.3 系统的内置模块

二、异常处理

2.1 异常介绍

  • 什么是异常?
    • 程序在运行过程中,发生了未知的事件,影响到了程序的正常运行
    • 异常是一种事件
    • 异常会影响到程序正常运行

2.2 捕获异常

  • 为了保证程序正常运行
2.2.1 捕获异常try-except
"""
try:可能发生异常的代码
except Exception as 异常对象名:# Exception : 为系统提供的异常类, 凡是未知错误类型, 都可以尝试使用该异常类进行异常类型匹配print(异常对象名) 即可获取异常的信息描述说明:
1. 如果希望程序无论出现任何错误, 都不会因为Python解释器抛出异常而被终止, 可以捕获 Exception
2. except Exception as e: e表示捕获到的异常对象, 记录异常的错误信息, e为惯用变量名, 可以自定义需求:
1. 提示用户输入一个整数- 用户输入的可能不是一个整数
2. 使用 8 除以用户输入的整数并且输出- 0不能做除数
"""
# a = 10
# b = 0
# try:
#     res = a//b
#
# except:
#     print("有异常")# try  except Exception  as xxx  捕获异常  可以输出异常信息# a = 10
# b = 0
# try:
#     res = a // b
#
# except Exception as e:
#     print(e)# Exception 会捕获各类 错误信息  as e  可以输出错误信息  e 是变量名称 可以自定义
# try:
#     # pygame.init()
#     num = int(input(''))
# except Exception as err:
#     print(err)a = 10
b = 0
lst = [1, 2, 3, 4, 5]# 所有的错误信息都有一个父类叫做BaseExceptiontry:res = lst[6]
# except ZeroDivisionError as z:
except IndexError as z:print(z)print("======")
2.2.2 捕获异常完整语法
"""
应用场景:
1. 成功打开文件的前提下,后面读写文件,不管有没有异常,最终都要关闭文件
2. 成功连接网络的前提下,后面发送或接收网络数据,不管有没有异常,最终都要断开连接try:可能发生异常的代码
except:处理异常的代码
else:没有发生异常,except不满足执行else
finally:不管有没有异常,最终都要执行需求:
1. 获取用户输入的数字,转换为int
2. 如果输入不是整数,转换会产生异常,提示输入错误
3. 如果是整数, 则进一步判断是奇数还是偶数
4. 最终提示: 程序运行结束
"""try:num = int(input('请输入一个整数'))
except ValueError as V:print(V)else:print("你输入的数",num)
finally:print("程序运行结束")

2.3 自定义异常

2.3.1 常见的异常类型介绍
2.3.2 自定义异常

在这里插入图片描述

class 自定义异常名(Exception):def __init__(self, msg):self.msg = msgdef __str__(self):return self.msg

三、PyQt5

3.1 PyQt5简介和环境搭建

  • PyQt是一套Python的GUI开发框架,即图形用户界面开发框架

  • 其中PyQt是Qt(C++语言实现的)为Python专门提供的扩展

  • PySide官网:https://doc.qt.io/qtforpython-6/

  • 插件安装

    pip install 插件名字	# 安装
    pip uninstall 插件名字	# 卸载
    pip install 插件名字 -i 指定下载的镜像网址
    pip show 插件名字		# 查看插件名字# 安装PyQt5
    pip  install  PyQt5  -i https://pypi.tuna.tsinghua.edu.cn/simple
    # 安装Qt工具软件
    pip install PyQt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple
    # 安装PyQt5语法检测包(可选)
    pip install PyQt5-stubs -i https://pypi.tuna.tsinghua.edu.cn/simple
    # 安装PyQt5帮助文档(可选)
    pip install PyQtdoc -i https://pypi.tuna.tsinghua.edu.cn/simple
    # 查看安装版本
    pip  show  PyQt5
    pip  show  PyQt5-tools
    pip  show  PyQt5-stubs
    
  • 如果安装了帮助文档,帮助文档所在位置

在这里插入图片描述

  • 帮助文档配置教程(点我😊)

3.2 第一个Qt程序

3.2.1 第一个Qt窗口
"""
# 0. 导入模块
# 1.创建应用程序
# 2.创建窗口
# 3.显示窗口
# 4.等待窗口停止
"""
import sysfrom PyQt5.QtWidgets import *# 创建应用程序
app = QApplication(sys.argv)
# 创建窗口  w就是我们创建的窗口对象
w = QWidget()# 显示窗口
w.show()# 等待中止
sys.exit(app.exec_())
3.2.2 窗口的相关设置
"""
# 设置窗口标题
# 设置窗口尺寸
# 设置图标
# 鼠标停留在控件上时就会显示ToolTip的信息
"""
import sys# 导包 模块
from PyQt5.QtWidgets import *# 创建应用程序
app = QApplication(sys.argv)# 创建窗口
w = QWidget()# 设置标题
w.setWindowTitle("QQ开发版")
# 窗口大小
w.resize(800, 600)
# 设置气泡提示w.setToolTip("这是一个窗口")# 展示
w.show()# 等待中止
sys.exit(app.exec_())

3.3 常用控件

3.3.1 标签QLabel
3.3.1.1 显示文字
"""
# 创建QLabel标签对象
# 设置文本内容
# 指定主窗口为父对象,标签放在主窗口上
"""import sysfrom PyQt5.QtWidgets import *# 创建应用程序
app = QApplication(sys.argv)
# 创建窗口  w就是我们创建的窗口对象
w = QWidget()
#
# #后续的创建按钮 文本 图像 等等 都是放到这里
# 显示文字
# 创建QLabel标签对象
label = QLabel()
# 设置文本内容
label.setText("Hello 你好呀")
label.move(100,100)
print(label.text())
# 指定主窗口为父对象,标签放在主窗口上
label.setParent(w)# 显示窗口
w.show()# 等待中止
sys.exit(app.exec_())
3.3.1.2 显示图片
"""
# 创建QLabel标签对象
# 创建QPixmap对象
# 设置标签图片
# 指定主窗口为父对象,标签放在主窗口上
# 根据图片大小设置窗口大小
"""
import sysfrom PyQt5.QtGui import QPixmap, QIcon
from PyQt5.QtWidgets import *# 创建应用程序
app = QApplication(sys.argv)
# 创建窗口  w就是我们创建的窗口对象
w = QWidget()pixmap = QPixmap("img/img.png")#设置程序的icon
#windows 设置
w.setWindowIcon(QIcon(pixmap))# 创建QLabel标签对象label = QLabel()
# 创建QPixmap对象
pixmap = QPixmap("img/img.png")
# 设置标签图片
label.setPixmap(pixmap)
# 指定主窗口为父对象,标签放在主窗口上
label.setParent(w)
# 根据图片大小设置窗口大小
w.resize(pixmap.width(), pixmap.height())# 显示窗口
w.show()# 等待中止
sys.exit(app.exec_())
3.3.2 输入框
3.3.2.1 单行输入框QLineEdit
"""
# 创建QLineEdit对象
# 设置默认提示语
# 设置内容为"hello world"
# 设置最大输入的长度
# 获取文本内容
# 设置输入框的回显模式:密码模式
# 指定父对象
"""import sysfrom PyQt5.QtWidgets import *# 创建应用程序
app = QApplication(sys.argv)
# 创建窗口  w就是我们创建的窗口对象
w = QWidget()# 创建QLineEdit对象
edit = QLineEdit()
# 设置默认提示语
edit.setPlaceholderText("请输入你的银卡卡账号:")
# 设置内容为"hello world"
edit.setText("9527")
# 设置最大输入的长度
edit.setMaxLength(10)
# 获取文本内容
print(edit.text())
#
# 设置输入框的回显模式:密码模式
edit.setEchoMode(edit.Password)
# 指定父对象
edit.setParent(w)
# 显示窗口
w.show()# 等待中止
sys.exit(app.exec_())
3.3.2.2 多行输入框QTextEdit
"""
# 创建QTextEdit对象
# 设置提示内容
# 设置默认内容
# 设置内容
# 获取内容
# 清空内容
# 指定父对象
"""import sysfrom PyQt5.QtWidgets import *# 创建应用程序
app = QApplication(sys.argv)
# 创建窗口  w就是我们创建的窗口对象
w = QWidget()
# 创建QTextEdit对象
txt = QTextEdit()
# 设置提示内容
txt.setPlaceholderText("请输入你的履历")
# 设置默认内容
txt.setText("Hello world")
# 设置内容
txt.setText("Hello")
# 获取内容
print(txt.toPlainText())
# 清空内容
txt.clear()
# 指定父对象
txt.setParent(w)# 显示窗口
w.show()# 等待中止
sys.exit(app.exec_())
3.3.3 按钮QPushButton
"""
# 创建QPushButton对象
# 设置按钮的文本内容
# 获取按钮的文本内容
# 指定父对象
"""import sysfrom PyQt5.QtWidgets import *# 创建应用程序
app = QApplication(sys.argv)
# 创建窗口  w就是我们创建的窗口对象
w = QWidget()
# 创建QPushButton对象
btn = QPushButton()
# 设置按钮的文本内容
btn.setText('点击抽奖')
# 获取按钮的文本内容
print(btn.text())
# 指定父对象
btn.setParent(w)# 显示窗口
w.show()# 等待中止
sys.exit(app.exec_())

3.4 信号和槽

3.4.1 按钮的信号与槽
  • 某些控件(部件)按下了,产生一个信号(事件)(理解为硬件的中断,实际上是软件层的中断)
  • 信号来了,处理信号对应的槽函数
  • 步骤
    • 1)要处理什么信号
    • 2)信号绑定的(连接的)对应槽函数
    • 3)定义槽函数(普通函数)
3.4.2 系统的信号和槽函数
# 按钮被点击了,调用关闭窗口的槽函数import sysfrom PyQt5.QtWidgets import *# 创建应用程序
app = QApplication(sys.argv)
# 创建窗口  w就是我们创建的窗口对象
w = QWidget()
# 创建QPushButton对象
btn = QPushButton()
# 设置按钮的文本内容
btn.setText('点击抽奖')
# 获取按钮的文本内容
print(btn.text())
# 指定父对象
btn.setParent(w)def func():print("中奖五百万!")# 方式1:自定义槽函数
btn.clicked.connect(func)# 方式2:槽函数为匿名函数
#关闭窗口
btn.clicked.connect(w.close)# 显示窗口
w.show()# 等待中止
sys.exit(app.exec_())

3.5 布局

3.5.1 水平布局QHBoxLayout
"""
# 创建QHBoxLayout对象
# 添加5个QPushButton控件
# 窗口添加布局
"""import sysfrom PyQt5.QtWidgets import *# 创建应用程序
app = QApplication(sys.argv)
# 创建窗口  w就是我们创建的窗口对象
w = QWidget()
# 创建QHBoxLayout对象
layout = QHBoxLayout()
# 添加5个QPushButton控件
btn1 = QPushButton("按钮1")
btn2 = QPushButton("按钮2")
btn3 = QPushButton("按钮3")
btn4 = QPushButton("按钮4")
btn5 = QPushButton("按钮5")
text = QLineEdit()#按钮添加到布局中
layout.addWidget(btn1)
layout.addWidget(btn2)
layout.addWidget(btn3)
layout.addWidget(btn4)
layout.addWidget(btn5)
layout.addWidget(text)# 窗口添加布局  setLayout
w.setLayout(layout)
# btn1.move(50,50)
# btn2.move(80,80)
# btn3.move(100,100)
# btn4.move(150,150)
# btn1.setParent(w)
# btn2.setParent(w)
# btn3.setParent(w)
# btn4.setParent(w)
# btn5.setParent(w)
w.resize(800,600)# 显示窗口
w.show()# 等待中止
sys.exit(app.exec_())
3.5.2 竖直布局QVBoxLayout
"""
# 创建QVBoxLayout对象
# 添加5个QPushButton控件
# 窗口添加布局
"""import sysfrom PyQt5.QtWidgets import *# 创建应用程序
app = QApplication(sys.argv)
# 创建窗口  w就是我们创建的窗口对象
w = QWidget()
# 创建QHBoxLayout对象
layout = QVBoxLayout()
# 添加5个QPushButton控件
btn1 = QPushButton("按钮1")
btn2 = QPushButton("按钮2")
btn3 = QPushButton("按钮3")
btn4 = QPushButton("按钮4")
btn5 = QPushButton("按钮5")
text = QLineEdit()#按钮添加到布局中
layout.addWidget(btn1)
layout.addWidget(btn2)
layout.addWidget(btn3)
layout.addWidget(btn4)
layout.addWidget(btn5)
layout.addWidget(text)# 窗口添加布局  setLayout
w.setLayout(layout)w.resize(800,600)# 显示窗口
w.show()# 等待中止
sys.exit(app.exec_())
3.5.3 表单布局QFormLayout
"""
# 创建QFormLayout对象
form = QFormLayout()
# 创建用户名QLineEdit对象
user = QLineEdit()
# 创建密码QLineEdit对象
pwd = QLineEdit()
# 密码QLineEdit对象设置密码属性
pwd.setEchoMode(pwd.Password)
# 创建手机号QLineEdit对象
tel = QLineEdit()
# QFormLayout对象添加addRow用户名、密码、手机号控件
form.addRow("user",user)
form.addRow("pwd",pwd)
form.addRow("tel",tel)
# 创建QPushButton对象
btn = QPushButton("注册")
form.addRow("",btn)
# QPushButton对象信号clicked绑定自定义槽函数on_submit
deg function():pass
btn.clicked.connect(function)
# 槽函数on_submit实现功能:分别获取用户名、密码、手机号文本内容
# QFormLayout对象添加addRow按钮
# 窗口设置布局
w.setLayout(form)
"""import sysfrom PyQt5.QtWidgets import *# 创建应用程序
app = QApplication(sys.argv)
# 创建窗口  w就是我们创建的窗口对象
w = QWidget()
# 设置 form layout
form = QFormLayout()# 创建用户名QLineEdit对象  单行文本
user = QLineEdit()
# 创建密码QLineEdit对象
pwd = QLineEdit()
# 密码QLineEdit对象设置密码属性
pwd.setEchoMode(pwd.Password)
# 创建手机号QLineEdit对象
tel = QLineEdit()# 创建QPushButton对象
btn = QPushButton("注册信息")
# QFormLayout对象添加addRow用户名、密码、手机号控件
# QFormLayout对象添加addRow按钮
form.addRow("用户名:", user)
form.addRow("密 码:",pwd)
form.addRow("手机号:",tel)
# form.addRow("注册",btn)
form.addRow("",btn)#将layout设置到窗口
w.setLayout(form)
# 槽函数on_submit实现功能:分别获取用户名、密码、手机号文本内容
def on_submit():print(user.text(),pwd.text(),tel.text())# QPushButton对象信号clicked绑定自定义槽函数on_submitbtn.clicked.connect(on_submit)# w.resize(640,480)
# 显示窗口
w.show()# 等待中止
sys.exit(app.exec_())
3.5.4 嵌套布局

在这里插入图片描述

"""
# 创建QHBoxLayout对象h_layout
# 创建QVBoxLayout对象v_layout1,添加一个QPushButton对象1
# h_layout添加v_layout1对象
# 创建QVBoxLayout对象v_layout2,添加QPushButton对象2, QPushButton对象3
# h_layout添加v_layout2对象
# 创建QVBoxLayout对象v_layout3,添加QPushButton对象4, QPushButton对象5, QPushButton对象6
# h_layout添加v_layout3对象
# 创建QVBoxLayout对象v_layout4,添加QPushButton对象7, QPushButton对象8, QPushButton对象9, QPushButton对象10
# h_layout添加v_layout4对象
# 窗口添加布局h_layout
"""
import sysfrom PyQt5.QtWidgets import *# 创建应用程序
app = QApplication(sys.argv)
# 创建窗口  w就是我们创建的窗口对象
w = QWidget()
# 创建QHBoxLayout对象h_layout (整个水平布局)
h_layout = QHBoxLayout()# 创建QHBoxLayout对象v_layout1,添加一个QPushButton对象1  整个水平布局中的第一个水平布局layout1
v_layout1 = QHBoxLayout()
btn1 = QPushButton("btn1")
btn2 = QPushButton("按钮1")
v_layout1.addWidget(btn1)
v_layout1.addWidget(btn2)
# h_layout添加v_layout1对象
h_layout.addLayout(v_layout1)
# 创建QVBoxLayout对象v_layout2,添加QPushButton对象2, QPushButton对象3
v_layout2 = QVBoxLayout()
v_layout2.addWidget(QPushButton("btn2"))
v_layout2.addWidget(QPushButton("btn3"))
# h_layout添加v_layout2对象
h_layout.addLayout(v_layout2)
# 创建QVBoxLayout对象v_layout3,添加QPushButton对象4, QPushButton对象5, QPushButton对象6
v_layout3 = QVBoxLayout()
v_layout3.addWidget(QPushButton("btn4"))
v_layout3.addWidget(QPushButton("btn5"))
v_layout3.addWidget(QPushButton("btn6"))
# h_layout添加v_layout3对象
h_layout.addLayout(v_layout3)
# 创建QVBoxLayout对象v_layout4,添加QPushButton对象7, QPushButton对象8, QPushButton对象9, QPushButton对象10
v_layout4 = QVBoxLayout()
v_layout4.addWidget(QPushButton("按钮7"))
v_layout4.addWidget(QPushButton("按钮8"))
v_layout4.addWidget(QPushButton("按钮9"))
v_layout4.addWidget(QPushButton("按钮10"))
# h_layout添加v_layout4对象
h_layout.addLayout(v_layout4)
# 窗口添加布局h_layout
w.setLayout(h_layout)# 显示窗口
w.show()
w.resize(800,600)
# 等待中止
sys.exit(app.exec_())

3.6 对话框

3.6.1 消息对话框QMessageBox
"""
# 创建QPushButton对象btn
# btn信号clicked绑定槽函数
# 槽函数中弹出消息QMessageBox对话框,并设置消息对话框的标题、内容、按钮,选择对话框后做出响应判断
# btn指定父对象
"""import sysfrom PyQt5.QtWidgets import *# 创建应用程序
app = QApplication(sys.argv)
# 创建窗口  w就是我们创建的窗口对象
w = QWidget()
# 创建QPushButton对象
btn = QPushButton()
# 设置按钮的文本内容
btn.setText('点击抽奖')
# 获取按钮的文本内容
print(btn.text())
# 指定父对象
btn.setParent(w)# 创建QPushButton对象btn
# btn信号clicked绑定槽函数def btn_click():res =   QMessageBox.information(w, '中奖信息',"请确认协议内容",QMessageBox.Yes|QMessageBox.No)if res == QMessageBox.Yes:print("ok")
# 槽函数中弹出消息QMessageBox对话框,并设置消息对话框的标题、内容、按钮,选择对话框后做出响应判断
# btn指定父对象
btn.clicked.connect(btn_click)# 显示窗口
w.show()# 等待中止
sys.exit(app.exec_())
3.6.2 输入对话框QInputDialog
"""
# 创建QVboxLayout对象layout
# 创建QLabel对象label
# label设置内容"匿名"
# layout添加label
# 创建QPushButton对象btn
# btn设置内容"创建角色"
# layout添加btn
# btn的信号clicked连接槽函数show_dialog
# 槽函数中创建QInputDialog对象,获取用户输入的内容,给label设置内容
# 窗口添加布局
"""import sysfrom PyQt5.QtWidgets import *# 创建应用程序
app = QApplication(sys.argv)
# 创建窗口  w就是我们创建的窗口对象
w = QWidget()# 创建QVboxLayout对象layout
layout = QVBoxLayout()
# 创建QLabel对象label
label = QLabel()
# label设置内容"匿名"
label.setText("匿名")
# layout添加label
layout.addWidget(label)
# 创建QPushButton对象btn
btn = QPushButton()
# btn设置内容"创建角色"
btn.setText("创建角色")
# layout添加btn
layout.addWidget(btn)# btn的信号clicked连接槽函数show_dialog
def show_dialog():res, flag = QInputDialog.getText(w, "标题", "请创建角色")if flag:print("创建角色成功:", res)btn.clicked.connect(show_dialog)
# 槽函数中创建QInputDialog对象,获取用户输入的内容,给label设置内容
# 窗口添加布局
w.setLayout(layout)# 显示窗口
w.show()# 等待中止
sys.exit(app.exec_())

3.7 单、复选框

3.7.1 单选框QRadioButton
"""
# 创建QRadioButton对象btn1,设置内容"男"
# 创建QRadioButton对象btn2,设置内容"女"
# 设置btn2为选中状态
# 创建QButtonGroup对象group,将btn1和btn2添加到group
# group的信号buttonToggled连接槽函数on_group_toggled
# 槽函数参数为QRadioButton对象,里面打印被按下按钮的文本,打印选中状态
# 创建VBoxLayout对象layout,将btn1和btn2添加到layout
# 窗口添加布局
"""
import sysfrom PyQt5.QtWidgets import *# 创建应用程序
app = QApplication(sys.argv)
# 创建窗口  w就是我们创建的窗口对象
w = QWidget()# 创建VBoxLayout对象layout,将btn1和btn2添加到layout
layout = QHBoxLayout()
# 创建QRadioButton对象btn1,设置内容"男"
radio = QRadioButton("男")
# 创建QRadioButton对象btn2,设置内容"女"
radio2 = QRadioButton("女")
# 设置btn2为选中状态
radio2.setChecked(True)# group的信号buttonToggled连接槽函数on_group_toggled
# 槽函数参数为QRadioButton对象,里面打印被按下按钮的文本,打印选中状态
# 创建VBoxLayout对象layout,将btn1和btn2添加到layout
layout.addWidget(radio)
layout.addWidget(radio2)
# 窗口添加布局
w.setLayout(layout)#定义槽函数
def on_toggled():if radio.isChecked():print("男被选中")if radio2.isChecked():print("女被选中")#信号绑定
radio.toggled.connect(on_toggled)
radio2.toggled.connect(on_toggled)# 显示窗口
w.show()# 等待中止
sys.exit(app.exec_())
3.7.2 复选框QCheckBox
"""
# 创建QCheckBox对象box1,并设置文本为“学习”
# 创建QCheckBox对象box2,并设置文本为“睡觉”
# 创建QCheckBox对象box3,并设置文本为“工作”
# box1、box2、box3的信号statusChanged和槽函数box_slot绑定
# 槽函数判断是否被选中
# 创建QHBoxLayout对象layout,并添加box1、box2、box3
# 窗口添加布局
"""import sysfrom PyQt5.QtWidgets import *# 创建应用程序
app = QApplication(sys.argv)
# 创建窗口  w就是我们创建的窗口对象
w = QWidget()
# 创建VBoxLayout对象layout,将btn1和btn2添加到layout
layout = QHBoxLayout()
#创建复选框box1 = QCheckBox("语文")
box2 = QCheckBox("数学")
box3 = QCheckBox("英语")layout.addWidget(box1)
layout.addWidget(box2)
layout.addWidget(box3)# 槽函数判断是否被选中
def box_slot():if box1.isChecked():print("今天上语文课")if box2.isChecked():print("下节课上数学")if box3.isChecked():print("下节课上英语")# box1、box2、box3的信号statusChanged和槽函数box_slot绑定
box1.stateChanged.connect(box_slot)
box2.stateChanged.connect(box_slot)
box3.clicked.connect(box_slot)# 窗口添加布局
w.setLayout(layout)#定义槽函数# 显示窗口
w.show()# 等待中止
sys.exit(app.exec_())

3.8 PyQt面向对象开发

"""
类名:MyWidget继承QWidget
实例方法:__init__(self, parent=None): 调用父类的__init__(parent)方法,调用初始化窗口init_ui(): 窗口控件的添加、布局、信号和槽处理程序入口:# 1.创建应用程序# 2.创建窗口# 3.显示窗口# 4.等待窗口停止
"""
import sysfrom PyQt5.QtWidgets import *# 定义我们的widget类
class myWidget(QWidget):def __init__(self, parent=None):super().__init__(parent)#     调用init_UIself.init_ui()def init_ui(self):'''初始化ui:return:'''# self.setWindowTitle("设置标题")if __name__ == '__main__':# 创建程序appapp = QApplication(sys.argv)w = myWidget()w.show()sys.exit(app.exec_())

3.9 Qt Designer

3.9.1 配置PyCharm的PyQt工具
  • 教程:https://www.yuque.com/icheima/python/qt_designer#aiIoe

在这里插入图片描述

在这里插入图片描述

3.9.2 通过Designer设计界面

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 新建ui包

    在这里插入图片描述

  • 打开designer界面

在这里插入图片描述

  • 新建Widget窗口

    在这里插入图片描述

  • 根据需要拖拽控件,然后保存

在这里插入图片描述

在这里插入图片描述

  • ui文件转换为python代码

    • 注意:每次修改了ui文件,记得保存,然后就得重新把ui文件转换为python代码

    在这里插入图片描述

  • 加载ui文件模板代码

    • 导包中模块 from ui.ui模块文件名 import Ui_对象名

    在这里插入图片描述

    • 实例化ui模块对象,调用setupUi()方法
3.9.3 如何使用ui上面的控件

在这里插入图片描述

这篇关于python与上位机开发day04的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/948780

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta