PyQt5 入门

文章目录

    • 1. 安装测试
    • 2. qt 设计师 designer
    • 3. 布局管理
      • 3.1 使用布局管理器布局
      • 3.2 使用容器布局
      • 3.3 实践
      • 3.4 窗体布局
      • 3.5 设置伙伴关系
      • 3.6 tab键顺序
      • 3.7 Eric 使用
    • 4. 信号、槽关联
      • 4.1 简单入门
      • 4.2 进阶
    • 5. 菜单与工具
      • 5.1 加载其他窗口
        • 主窗体 py
        • 子窗口 py
        • 调用主程序 py
        • 测试
    • 6. 打包资源

learn from 《PyQt5 快速开发与实战》

1. 安装测试

# _*_ coding: utf-8 _*_
# @Time : 2022/4/4 23:11
# @Author : Michael
# @File : myfirst_qt1.py
# @desc :# 安装 pip install pyqt5, pyqt5-toolsimport sys
from PyQt5 import QtWidgets, QtCoreapp = QtWidgets.QApplication(sys.argv)
widget = QtWidgets.QWidget()
widget.resize(360, 360)
widget.setWindowTitle('hello Michael, First Qt 应用')
widget.show()
sys.exit(app.exec_())

在这里插入图片描述

# _*_ coding: utf-8 _*_
# @Time : 2022/4/4 23:26
# @Author : Michael
# @File : first_window.py
# @desc :
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBoxclass winform(QWidget):def __init__(self, parent=None):super(winform, self).__init__(parent)self.setGeometry(100, 100, 700, 350) # 窗口左上角的坐标,窗口宽高self.setWindowTitle('第一个窗口')quit = QPushButton('点击退出', self)quit.setGeometry(20, 10, 100, 35)quit.setStyleSheet("background-color: brown")quit.clicked.connect(self.close)if __name__ == "__main__":app = QApplication(sys.argv)win = winform()win.show()sys.exit(app.exec_())

在这里插入图片描述

2. qt 设计师 designer

我的路径是:D:\ProgramData\Anaconda3\envs\cv\Lib\site-packages\qt5_applications\Qt\bin\designer.exe

在这里插入图片描述
拖出一个按钮
在这里插入图片描述
保存 firstwindow.ui 文件,可以转成 py 代码

pyuic5 -o firstui.py firstwindow.ui 

3. 布局管理

在这里插入图片描述

3.1 使用布局管理器布局

在这里插入图片描述
在这里插入图片描述

3.2 使用容器布局

在这里插入图片描述
右键下图 Frame 进行水平 布局
在这里插入图片描述

3.3 实践

拖出一些控件
在这里插入图片描述
左侧(有四个label,最上面一个显示的字符为空),进行垂直布局
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
spacers 表示布局不要挨在一起
在这里插入图片描述
display Widgets -> Vertical Line 表示左右两个布局管理器不是同一个类别,把他们区分开

选中所有布局,右键,水平布局
在这里插入图片描述

3.4 窗体布局

不选中任务控件,右键选择布局
在这里插入图片描述
打破布局:布局错了很多步,比撤销方便
在这里插入图片描述

3.5 设置伙伴关系

在这里插入图片描述

3.6 tab键顺序

在这里插入图片描述

3.7 Eric 使用

Eric6安装使用

使用 eric 可以快速的调试 UI 界面

在这里插入图片描述
编译完,会自动生成脚本,点击运行
在这里插入图片描述
在这里插入图片描述

4. 信号、槽关联

信号发射,连接的槽函数将会自动执行,连接使用QObject.signal.connect()

添加方法:

  • 窗口UI设计中添加
  • 写代码连接信号、槽
  • Eric “生成对话框代码”的功能

4.1 简单入门

创建 Widget 窗口,实现一个关闭按钮

拖入button,更改 text 为显示的文字,更改objectName 为 closeWin
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用 Eric 测试
在这里插入图片描述

4.2 进阶

在这里插入图片描述
接下来可以使用 命令行编译窗体,也可以使用 Eric “生成对话框代码”,使用后者来操作

在这里插入图片描述
右键ui文件,先编译窗体,再生成对话框代码
在这里插入图片描述
文件夹下多了一个 py 文件

# -*- coding: utf-8 -*-"""
Module implementing Form.
"""from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QWidgetfrom .Ui_signal_slog1 import Ui_Formclass Form(QWidget, Ui_Form):"""Class documentation goes here."""def __init__(self, parent=None):"""Constructor@param parent reference to the parent widget (defaults to None)@type QWidget (optional)"""super(Form, self).__init__(parent)self.setupUi(self)@pyqtSlot(bool)def on_select_box_clicked(self, checked):"""Slot documentation goes here.@param checked DESCRIPTION@type bool"""# TODO: not implemented yetraise NotImplementedError

上面代码还没有实现,修改代码后:

# -*- coding: utf-8 -*-"""
Module implementing Form.
"""from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QWidget
from PyQt5 import QtCore, QtGui, QtWidgets
from Ui_signal_slog1 import Ui_Formclass Form(QWidget, Ui_Form):"""Class documentation goes here."""def __init__(self, parent=None):"""Constructor@param parent reference to the parent widget (defaults to None)@type QWidget (optional)"""super(Form, self).__init__(parent)self.setupUi(self)self.select_box.setChecked(True) # 设置默认是选中状态@pyqtSlot(bool)def on_select_box_clicked(self, checked):"""Slot documentation goes here.@param checked DESCRIPTION@type bool"""self.label_display.setVisible(checked)self.lineEdit.setEnabled(checked)
if __name__ == '__main__':import sysapp = QtWidgets.QApplication(sys.argv)form = Form()form.show()sys.exit(app.exec_())

在这里插入图片描述
也可以在 Qt 中编辑
在这里插入图片描述

5. 菜单与工具

新建 mainWindow
在这里插入图片描述
输入 文件(&F)括号内是快捷键设置
在这里插入图片描述
子菜单
在这里插入图片描述
添加快捷键
在这里插入图片描述
添加工具栏
在这里插入图片描述
添加动作
在这里插入图片描述
在这里插入图片描述
添加信号、槽
在这里插入图片描述

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'D:\gitcode\Python_learning\qt\ch1\menu_bar_tool_bar.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.# Ui_menu_bar_tool_bar.pyfrom PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(422, 161)self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")MainWindow.setCentralWidget(self.centralwidget)self.menubar = QtWidgets.QMenuBar(MainWindow)self.menubar.setGeometry(QtCore.QRect(0, 0, 422, 26))self.menubar.setObjectName("menubar")self.menu_F = QtWidgets.QMenu(self.menubar)self.menu_F.setObjectName("menu_F")self.menu = QtWidgets.QMenu(self.menubar)self.menu.setObjectName("menu")MainWindow.setMenuBar(self.menubar)self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.toolBar = QtWidgets.QToolBar(MainWindow)self.toolBar.setObjectName("toolBar")MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar)self.actionopen_O = QtWidgets.QAction(MainWindow)self.actionopen_O.setObjectName("actionopen_O")self.actionnew_N = QtWidgets.QAction(MainWindow)self.actionnew_N.setObjectName("actionnew_N")self.actionclose = QtWidgets.QAction(MainWindow)self.actionclose.setObjectName("actionclose")self.addWinAction = QtWidgets.QAction(MainWindow)self.addWinAction.setObjectName("addWinAction")self.menu_F.addAction(self.actionopen_O)self.menu_F.addAction(self.actionnew_N)self.menu_F.addAction(self.actionclose)self.menubar.addAction(self.menu_F.menuAction())self.menubar.addAction(self.menu.menuAction())self.toolBar.addAction(self.addWinAction)self.retranslateUi(MainWindow)self.actionclose.triggered.connect(MainWindow.close)QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))self.menu_F.setTitle(_translate("MainWindow", "文件(&F)"))self.menu.setTitle(_translate("MainWindow", "编辑(E)"))self.toolBar.setWindowTitle(_translate("MainWindow", "toolBar"))self.actionopen_O.setText(_translate("MainWindow", "open(O)"))self.actionopen_O.setShortcut(_translate("MainWindow", "Ctrl+O"))self.actionnew_N.setText(_translate("MainWindow", "new(N)"))self.actionclose.setText(_translate("MainWindow", "close"))self.addWinAction.setText(_translate("MainWindow", "添加窗体"))if __name__ == "__main__":import sysapp = QtWidgets.QApplication(sys.argv)MainWindow = QtWidgets.QMainWindow()ui = Ui_MainWindow()ui.setupUi(MainWindow)MainWindow.show()sys.exit(app.exec_())
# -*- coding: utf-8 -*-
# menu_bar_tool_bar.py
"""
Module implementing MainWindow.
"""import sys
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QMainWindow, QApplication, QFileDialogfrom Ui_menu_bar_tool_bar import Ui_MainWindowclass MainWindow(QMainWindow, Ui_MainWindow):"""Class documentation goes here."""def __init__(self, parent=None):"""Constructor@param parent reference to the parent widget (defaults to None)@type QWidget (optional)"""super(MainWindow, self).__init__(parent)self.setupUi(self)self.actionclose.triggered.connect(self.on_actionclose_triggered)self.actionopen_O.triggered.connect(self.on_actionopen_O_triggered)@pyqtSlot()def on_actionnew_N_triggered(self):"""Slot documentation goes here."""# TODO: not implemented yetraise NotImplementedError@pyqtSlot()def on_actionclose_triggered(self):"""Slot documentation goes here."""self.statusbar.showMessage("再见!")@pyqtSlot()def on_actionopen_O_triggered(self):"""Slot documentation goes here."""file,  ok = QFileDialog.getOpenFileName(self,  "打开",  "D:/",  "ALL Files(*);; Text Files(*TxT)")self.statusbar.showMessage(file)if __name__  == "__main__":app = QApplication(sys.argv)win = MainWindow()win.show()sys.exit(app.exec_())

在这里插入图片描述

5.1 加载其他窗口

  • 新建 ui
    在这里插入图片描述
    在这里插入图片描述
    使用 Eric 编译两个 UI 文件,并做修改

主窗体 py

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'D:\gitcode\Python_learning\qt\ch1\menu_bar_tool_bar.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.# Ui_menu_bar_tool_bar.pyfrom PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(401, 328)self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")self.gridLayoutWidget = QtWidgets.QWidget(self.centralwidget)self.gridLayoutWidget.setGeometry(QtCore.QRect(-1, -1, 611, 441))self.gridLayoutWidget.setObjectName("gridLayoutWidget")self.gridlayout1 = QtWidgets.QGridLayout(self.gridLayoutWidget)self.gridlayout1.setContentsMargins(0, 0, 0, 0)self.gridlayout1.setObjectName("gridlayout1")MainWindow.setCentralWidget(self.centralwidget)self.menubar = QtWidgets.QMenuBar(MainWindow)self.menubar.setGeometry(QtCore.QRect(0, 0, 401, 26))self.menubar.setObjectName("menubar")self.menu_F = QtWidgets.QMenu(self.menubar)self.menu_F.setObjectName("menu_F")self.menu = QtWidgets.QMenu(self.menubar)self.menu.setObjectName("menu")MainWindow.setMenuBar(self.menubar)self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.toolBar = QtWidgets.QToolBar(MainWindow)self.toolBar.setObjectName("toolBar")MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar)self.actionopen_O = QtWidgets.QAction(MainWindow)self.actionopen_O.setObjectName("actionopen_O")self.actionnew_N = QtWidgets.QAction(MainWindow)self.actionnew_N.setObjectName("actionnew_N")self.actionclose = QtWidgets.QAction(MainWindow)self.actionclose.setObjectName("actionclose")self.addWinAction = QtWidgets.QAction(MainWindow)self.addWinAction.setObjectName("addWinAction")self.menu_F.addAction(self.actionopen_O)self.menu_F.addAction(self.actionnew_N)self.menu_F.addAction(self.actionclose)self.menubar.addAction(self.menu_F.menuAction())self.menubar.addAction(self.menu.menuAction())self.toolBar.addAction(self.addWinAction)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))self.menu_F.setTitle(_translate("MainWindow", "文件(&F)"))self.menu.setTitle(_translate("MainWindow", "编辑(E)"))self.toolBar.setWindowTitle(_translate("MainWindow", "toolBar"))self.actionopen_O.setText(_translate("MainWindow", "open(O)"))self.actionopen_O.setShortcut(_translate("MainWindow", "Ctrl+O"))self.actionnew_N.setText(_translate("MainWindow", "new(N)"))self.actionclose.setText(_translate("MainWindow", "close"))self.addWinAction.setText(_translate("MainWindow", "添加窗体"))if __name__ == "__main__":import sysapp = QtWidgets.QApplication(sys.argv)MainWindow = QtWidgets.QMainWindow()ui = Ui_MainWindow()ui.setupUi(MainWindow)MainWindow.show()sys.exit(app.exec_())

子窗口 py

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'D:\gitcode\Python_learning\qt\ch1\childform2.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.# Ui_childform2.pyfrom PyQt5 import QtCore, QtGui, QtWidgetsclass ui_childform(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(479, 332)MainWindow.setStyleSheet("")self.textEdit = QtWidgets.QTextEdit(MainWindow)self.textEdit.setGeometry(QtCore.QRect(90, 100, 131, 31))self.textEdit.setObjectName("textEdit")self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "Form"))self.textEdit.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'SimSun\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">我是子窗口内容</p></body></html>"))if __name__ == "__main__":import sysapp = QtWidgets.QApplication(sys.argv)MainWindow = QtWidgets.QMainWindow()ui = ui_childform()ui.setupUi(MainWindow)MainWindow.show()sys.exit(app.exec_())

调用主程序 py

# -*- coding: utf-8 -*-
# childform2.pyimport sys
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QMainWindow, QWidget, QApplication, QFileDialog
from Ui_childform2 import ui_childform
from Ui_menu_bar_tool_bar import Ui_MainWindowclass MainWindow_withchild(QMainWindow, Ui_MainWindow):def __init__(self, parent=None):super(MainWindow_withchild, self).__init__(parent)self.setupUi(self)self.child = my_childform()  # 创建子窗口实例self.actionclose.triggered.connect(self.close)self.actionopen_O.triggered.connect(self.openMsg)self.addWinAction.triggered.connect(self.childshow)def childshow(self):self.gridlayout1.addWidget(self.child)self.child.show()def openMsg(self):file, ok = QFileDialog.getOpenFileName(self, "打开", "C:/", "All Files (*);;Text Files (*.txt)")# 在状态栏显示文件地址self.statusbar.showMessage(file)class my_childform(QWidget, ui_childform):def __init__(self):super(my_childform, self).__init__()self.setupUi(self)if __name__ == "__main__":app = QApplication(sys.argv)win = MainWindow_withchild()win.show()sys.exit(app.exec_())

测试

在这里插入图片描述

6. 打包资源

将资源转换成 python 文件

步骤:

  • 新建资源
    在这里插入图片描述
    在这里插入图片描述
  • Qt 新建 widget 窗口,添加资源
    在这里插入图片描述
  • 查看文件
<RCC><qresource prefix="img"><file>img/1.jpg</file></qresource>
</RCC>
  • 使用文件
    在这里插入图片描述
    在这里插入图片描述
  • 转换 ui 到 py文件,使用 eric 操作,或者使用命令行
  • 转换资源文件 pyrcc5 .\apprcc.qrc -o apprcc_rc.py
  • import 导入生成的文件 apprcc_rc.py
# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'D:\gitcode\Python_learning\qt\ch1\add_resource.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.# Ui_add_resource.pyfrom PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(400, 300)self.label = QtWidgets.QLabel(Form)self.label.setGeometry(QtCore.QRect(30, 30, 351, 231))self.label.setText("")self.label.setPixmap(QtGui.QPixmap(":/img/img/1.jpg"))self.label.setObjectName("label")self.retranslateUi(Form)QtCore.QMetaObject.connectSlotsByName(Form)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowTitle(_translate("Form", "Form"))
import apprcc_rcif __name__ == "__main__":import sysapp = QtWidgets.QApplication(sys.argv)Form = QtWidgets.QWidget()ui = Ui_Form()ui.setupUi(Form)Form.show()sys.exit(app.exec_())

调用

# -*- coding: utf-8 -*-
# add_resource.pyfrom PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QWidget, QApplicationfrom Ui_add_resource import Ui_Formclass Form(QWidget, Ui_Form):"""Class documentation goes here."""def __init__(self, parent=None):"""Constructor@param parent reference to the parent widget (defaults to None)@type QWidget (optional)"""super(Form, self).__init__(parent)self.setupUi(self)if __name__ == "__main__":import sysapp = QApplication(sys.argv)form = Form()form.show()sys.exit(app.exec_())

在这里插入图片描述


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

八、Pandas的基本使用

Pandas的基本使用 点击标题即可获取文章源代码和笔记 4.1.0 概要 Pandas基础处理Pandas是什么&#xff1f;为什么用&#xff1f;核心数据结构DataFramePanelSeries基本操作运算画图文件的读取与存储高级处理4.1Pandas介绍4.1.1 Pandas介绍 - 数据处理工具panel data analysis…

4个强大的Linux服务器监控工具[转]

本文介绍了一些可以用来监控网络使用情况的Linux命令行工具。这些工具可以监控通过网络接口传输的数据&#xff0c;并测量目前哪些数据所传输的速度。入站流量和出站流量分开来显示。 一些命令可以显示单个进程所使用的带宽。这样一来&#xff0c;用户很容易发现过度使用网络带…

LeetCode 2248. 多个数组求交集(set)

文章目录1. 题目2. 解题1. 题目 给你一个二维整数数组 nums &#xff0c;其中 nums[i] 是由 不同 正整数组成的一个非空数组&#xff0c;按 升序排列 返回一个数组&#xff0c;数组中的每个元素在 nums 所有数组 中都出现过。 示例 1&#xff1a; 输入&#xff1a;nums [[3,…

九、Pandas高级处理

4.6高级处理-缺失值处理 点击标题即可获取文章源代码和笔记 数据集&#xff1a;https://download.csdn.net/download/weixin_44827418/12548095 Pandas高级处理缺失值处理数据离散化合并交叉表与透视表分组与聚合综合案例4.6 高级处理-缺失值处理1&#xff09;如何进行缺失值处…

用户投票算法

作者: 阮一峰 发布时间: 2012-03-29 13:33 阅读: 7323 次 推荐: 6 原文链接 [收藏] 目录 基于用户投票的排名算法&#xff08;一&#xff09;&#xff1a;Delicious和Hacker News  基于用户投票的排名算法&#xff08;二&#xff09;&#xff1a;Reddit  基于用户…

LeetCode 2255. 统计是给定字符串前缀的字符串数目

文章目录1. 题目2. 解题1. 题目 给你一个字符串数组 words 和一个字符串 s &#xff0c;其中 words[i] 和 s 只包含 小写英文字母 。 请你返回 words 中是字符串 s 前缀 的 字符串数目 。 一个字符串的 前缀 是出现在字符串开头的子字符串。 子字符串 是一个字符串中的连续一…

常用排序讲解

分类&#xff1a; 1&#xff09;插入排序&#xff08;直接插入排序、希尔排序&#xff09;2&#xff09;交换排序&#xff08;冒泡排序、快速排序&#xff09;3&#xff09;选择排序&#xff08;直接选择排序、堆排序&#xff09;4&#xff09;归并排序5&#xff09;分配排序&a…

七、matplotlib的使用

matplotlib的使用 点击标题即可获取文章源代码和笔记 二、Matplotlib2.1 Matplotlib之HelloWorld2.1.1 什么是Matplotlib - 画二维图表的python库mat - matrix 矩阵二维数据 - 二维图表plot - 画图lib - library 库matlab 矩阵实验室mat - matrixlab 实验室2.1.2 为什么要学习M…

LeetCode 2256. 最小平均差(前缀和)

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始长度为 n 的整数数组 nums 。 下标 i 处的 平均差 指的是 nums 中 前 i 1 个元素平均值和 后 n - i - 1 个元素平均值的 绝对差 。两个平均值都需要 向下取整 到最近的整数。 请你返回产生 最小平均差 的下标。 如果有…

十、简单线性回归的python实现(详解)

4. 简单线性回归的python实现 点击标题即可获取源代码和笔记 4.1 导入相关包 import numpy as np import pandas as pd import random import matplotlib as mpl import matplotlib.pyplot as pltplt.rcParams[font.sans-serif] [simhei] # 显示中文 plt.rcParams[axes.unic…

LeetCode 2257. 统计网格图中没有被保卫的格子数

文章目录1. 题目2. 解题1. 题目 给你两个整数 m 和 n 表示一个下标从 0 开始的 m x n 网格图。 同时给你两个二维整数数组 guards 和 walls &#xff0c;其中 guards[i] [rowi, coli] 且 walls[j] [rowj, colj] &#xff0c;分别表示第 i 个警卫和第 j 座墙所在的位置。 一…

LeetCode 2259. 移除指定数字得到的最大结果

文章目录1. 题目2. 解题1. 题目 给你一个表示某个正整数的字符串 number 和一个字符 digit 。 从 number 中 恰好 移除 一个 等于 digit 的字符后&#xff0c;找出并返回按 十进制 表示 最大 的结果字符串。 生成的测试用例满足 digit 在 number 中出现至少一次。 示例 1&am…

十一、加权线性回归案例:预测鲍鱼的年龄

加权线性回归案例&#xff1a;预测鲍鱼的年龄 点击文章标题即可获取源代码和笔记 数据集&#xff1a;https://download.csdn.net/download/weixin_44827418/12553408 1.导入数据集 数据集描述&#xff1a; import pandas as pd import numpy as npabalone pd.read_table(&q…

LeetCode 2260. 必须拿起的最小连续卡牌数(哈希)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 cards &#xff0c;其中 cards[i] 表示第 i 张卡牌的 值 。如果两张卡牌的值相同&#xff0c;则认为这一对卡牌 匹配 。 返回你必须拿起的最小连续卡牌数&#xff0c;以使在拿起的卡牌中有一对匹配的卡牌。 如果无法得到一对…

十二、案例:加利福尼亚房屋价值数据集(多元线性回归) Lasso 岭回归 分箱处理非线性问题 多项式回归

案例&#xff1a;加利福尼亚房屋价值数据集&#xff08;线性回归&#xff09;& Lasso & 岭回归 & 分箱处理非线性问题 点击标题即可获取文章源代码和笔记 1. 导入需要的模块和库 from sklearn.linear_model import LinearRegression as LR from sklearn.model_sel…

LeetCode 2261. 含最多 K 个可整除元素的子数组

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums 和两个整数 k 和 p &#xff0c;找出并返回满足要求的不同的子数组数&#xff0c;要求子数组中最多 k 个可被 p 整除的元素。 如果满足下述条件之一&#xff0c;则认为数组 nums1 和 nums2 是 不同 数组&#xff1a; 两…

二十、MySQL之用户权限管理(用户管理、权限管理、忘记root密码的解决方案)

用户权限管理&#xff1a;在不同的项目中给不同的角色&#xff08;开发者&#xff09;不同的操作权限&#xff0c;为了保证数据库数据的安全。 通常&#xff0c;一个用户的密码不会长期不变&#xff0c;所以需要经常性的变更数据库用户密码来确保用户本身安全&#xff08;mysql…

PyQt5 基本窗口控件(状态栏/窗口/图标/提示消息/QLabel/文本类控件)

文章目录1. 状态栏2. 窗口居中显示3. 关闭窗口4. QWidget5. 添加图标6. 气泡提示信息7. QLabel添加快捷键8. QLineEditechoMode验证器inputMask综合练习9. QTextEditlearn from 《PyQt5 快速开发与实战》 1. 状态栏 self.statusbar.showMessage("hello, Michael", …

CSMA/CD协议(先听再说,边听边说)

一、概念 载波监听多点接入/碰撞检测 CSMA/CD &#xff08;carrier sense multiple access with colision detection&#xff09; CS&#xff1a;载波侦听/监听&#xff0c;每一个站再发送数据之前以及发送数据时都要检测一下总线上是否有其他计算机再发送数据。 MA&#xff…

PyQt5 基本窗口控件(按钮类/对话框类)

文章目录1. 按钮类1.1 QPushButton1.2 QRadioButton1.3 QCheckBox1.4 QComboBox 下拉列表1.5 QSpinBox 计数器1.6 QSlider 滑动条2. 对话框类2.1 QDialog2.2 QMessageBox2.3 QInputDialog2.4 QFontDialog2.5 QFileDialoglearn from 《PyQt5 快速开发与实战》 https://doc.qt.io…