【PyQt】02-基本UI

文章目录

  • 前言
  • 一、首先了解什么是GUI?
  • 二、初学程序
    • 1.界面展示
      • 代码
      • 运行结果
    • 2.控件
      • 2.1按钮展示
        • 代码
        • 运行结果
      • 2.2 纯文本和输入框
        • 代码
        • 运行结果
    • 3、重新设置大小 -resize
    • 4、移动窗口-move()
    • 5、设置界面在电脑中央
      • 5.1 代码
      • 运行结果
    • 6、设置窗口图标
      • 代码
      • 运行结果
    • 7、布局
      • 7.1垂直布局代码
      • 运行结果
      • 7.2垂直布局代码-QVBoxLayout
      • 运行结果
      • 7.3九宫格布局-QGridLayout
        • 代码
        • 运行结果
      • 7.4表单 -QFormLayout
        • 登入界面代码
        • 运行结果
      • 7.5 抽屉布局-QStackedLayout
        • 切换界面代码
        • 运行结果
    • 8、窗口
      • 8.1 QWidget
      • 运行结果
      • 8.2 QMainWindow
        • 对话窗口代码
      • 8.3 QDialog
        • 运行结果
  • 总结


前言

学着学着发现王老师还有笔记,真好啊
PyQt


一、首先了解什么是GUI?

GUI,全称为Graphical User Interface,(可以是UI)中文名称为图形用户界面,是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说更为简便易用。

GUI是计算机与其使用者之间的对话接口,是计算机系统的重要组成部分。它一般由窗口、下拉菜单或者对话框等图形化的控件组成。用户通过点击菜单栏、按钮或者弹出对话框的形式来实现与机器的交互。

二、初学程序

1.界面展示

代码

代码如下(示例):

'''
#Author :susocool
#Creattime:2024/1/27
#FileName:第一个PyQt
#Description: 展示一个空的界面
'''
import sys
from PyQt5.QtWidgets import QApplication,QWidgetif __name__ == '__main__':app = QApplication(sys.argv) # 创建对象w = QWidget()# 设置窗口标题w.setWindowTitle("第一个PyQt")# 显示窗口w.show()# 程序进行循环等待状况app.exec()

运行结果

在这里插入图片描述

2.控件

PyQt中有非常多的功能模块,开发中最常用的功能模块主要有三个:

  • QtCore:包含了核心的非GUI的功能。主要和时间、文件与文件夹、各种数据、流、 URLs、mime类文件、进程与线程一起使用
  • QtGui:包含了窗口系统、事件处理、2D图像、基本绘画、字体和文字类
  • QtWidgets:包含了一些列创建桌面应用的UI元素

PyQt最好不要去看Init文件,因为本质上是调用的C++版本,而不是自己写的,建议去官网看。

PyQt5-按钮控件使用
常见的按钮类包括:QPushButton、QToolButton、QRadioButton、QCheckBox、他们都继承自QAbstractButton类;
QAbstractButton提供的状态:
在这里插入图片描述
提供的信号:
在这里插入图片描述

2.1按钮展示

代码
'''
#Author :susocool
#Creattime:2024/1/27
#FileName:02-按键
#Description: 按键展示
'''
import sysfrom PyQt5.QtWidgets import QApplication,QWidget,QPushButtonif __name__ == '__main__':app = QApplication(sys.argv)w = QWidget()w.setWindowTitle("按键展示")btn = QPushButton('按钮')# 设置窗口的父窗口-相当于背景图层,思路就像图层叠加btn.setParent(w)w.show()app.exec()
运行结果

在这里插入图片描述

2.2 纯文本和输入框

代码
'''
#Author :susocool
#Creattime:2024/1/27
#FileName:03-文本
#Description: 文本框展示
'''
import sys
from PyQt5.QtWidgets import QApplication,QWidget,QLabel,QLineEdit,QPushButtonif __name__ == '__main__':app = QApplication(sys.argv)    # 创建对象w = QWidget()# 设置窗口标题w.setWindowTitle("文本与输入框")# 纯文本label = QLabel("账号:",w)# 位置 大小 x,y,w,hlabel.setGeometry(20,20,30,28)# 输入框edit = QLineEdit(w)edit.setPlaceholderText("请输入账号")edit.setGeometry(55,20,200,29)btn = QPushButton("注册",w)btn.setGeometry(50,80,70,30)# 显示窗口w.show()# 程序进行循环等待状况app.exec()
运行结果

在这里插入图片描述

3、重新设置大小 -resize

在这里插入图片描述

4、移动窗口-move()

在这里插入图片描述
注意,不可以超过当前显示器的位置,比如-100之类的,会报错。

5、设置界面在电脑中央

5.1 代码

'''
#Author :susocool
#Creattime:2024/1/27
#FileName:03-文本
#Description: 文本框展示
'''
import sys
from PyQt5.QtWidgets import QApplication,QWidget,QLabel,QLineEdit,QPushButton,QDesktopWidgetif __name__ == '__main__':app = QApplication(sys.argv)    # 创建对象w = QWidget()# 设置窗口标题w.setWindowTitle("文本与输入框")# 纯文本label = QLabel("账号:",w)# 位置 大小 x,y,w,hlabel.setGeometry(20,20,30,28)w.resize(800,300)# 移动放置屏幕中央center_pointer = QDesktopWidget().availableGeometry().center()x = center_pointer.x()y = center_pointer.y()print(w.frameGeometry())print(w.frameGeometry().getRect())print(type(w.frameGeometry().getRect()))# 输入框edit = QLineEdit(w)edit.setPlaceholderText("请输入账号")edit.setGeometry(55,20,200,29)btn = QPushButton("注册",w)btn.setGeometry(50,80,70,30)# 显示窗口w.show()# 程序进行循环等待状况app.exec()

获取窗口的几何信息,并将窗口移动到屏幕的中心位置。

  • center_pointer = QDesktopWidget().availableGeometry().center():这行代码获取了屏幕的可用区域的中心点。QDesktopWidget().availableGeometry()返回一个表示屏幕可用区域的QRect对象,center()方法返回这个区域的中心点。
  • x = center_pointer.x()y = center_pointer.y():这两行代码获取了中心点的x坐标和y坐标。
  • print(w.frameGeometry()):这行代码打印出了窗口的几何信息。frameGeometry()方法返回一个表示窗口(包括其标题栏和边框)的几何形状的QRect对象。
  • print(w.frameGeometry().getRect()):这行代码打印出了窗口的几何信息的矩形表示。getRect()方法返回一个四元组,表示矩形的左上角的x坐标、y坐标、宽度和高度。
  • print(type(w.frameGeometry().getRect())):这行代码打印出了窗口的几何信息的矩形表示的类型。type()函数返回对象的类型。

运行结果

在这里插入图片描述

6、设置窗口图标

阿里巴巴矢量图标库(需要关注公众号之类的注册登入,搜素出来的图标质量也一般,中规中矩的评价是一般)

代码

'''
#Author :susocool
#Creattime:2024/1/30
#FileName:04-设置窗口图标
#Description:
'''
import sysfrom PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QWidgetif __name__ == '__main__':app = QApplication(sys.argv)# 创建一个QWidgetw = QWidget()# 设置标题w.setWindowTitle("看看我图标帅吗")# 设置图标 QIcon对象必须是一个图片地址w.setWindowIcon(QIcon('管理困难.png'))# 显示QWidgetw.show()app.exec()

运行结果

在这里插入图片描述
设置还是设置Title的图标,不是很美观,追求美观可以删除掉顶层的Title,里面内容自己设置。

7、布局

在Qt里面布局分为四个大类 :
当然可以,以下是这些类的简单功能描述:

  • QBoxLayout:用于在一行中水平或垂直地排列子部件。
  • QGridLayout:用于将子部件以网格形式排列。
  • QFormLayout:用于管理输入部件及其关联标签的表单。
  • QStackedLayout:用于管理一堆部件,其中一次只能看到一个部件。

👉这里需要注意,Qt写需要变成类,而不是函数,一个Button就是一个对象,为了封装更好,因此换成类。

7.1垂直布局代码

'''
#Author :susocool
#Creattime:2024/1/31
#FileName:05-布局
#Description: 垂直布局
'''
import sys
from PyQt5.QtWidgets import QApplication, QVBoxLayout, QWidget, QPushButton, QGroupBox, QMainWindow
from PyQt5.QtCore import Qtclass MyWindow(QWidget):def __init__(self):# 切记一定要调用父类的__init__方法,因为它里面有很多对UI空间的初始化操作super().__init__()# 设置大小self.resize(300, 300)# 设置标题self.setWindowTitle("垂直布局")# 垂直布局layout = QVBoxLayout()# 作用是在布局器中增加一个伸缩量,差不多弹簧,里面的参数表示QSpacerItem的个数,默认值为零# 会将你放在layout中的空间压缩成默认的大小# 下面的笔试1:1:1:2layout.addStretch(1)# 按钮1btn1 = QPushButton("按钮1")# 添加到布局器中# layout.addWidget(btn1, Qt.AlignmentFlag.AlignTop)layout.addWidget(btn1)layout.addStretch(1)# 按钮2btn2 = QPushButton("按钮2")# 添加到布局器layout.addWidget(btn2)layout.addStretch(1)# 按钮3btn3 = QPushButton("按钮3")# 添加到布局器layout.addWidget(btn3)layout.addStretch(2)self.setLayout(layout)if __name__ == '__main__':app = QApplication(sys.argv)# 创建一个QWidget子类w = MyWindow()w.show()app.exec()

运行结果

在这里插入图片描述
伸缩量的解释
在这里插入图片描述

7.2垂直布局代码-QVBoxLayout

'''
#Author :susocool
#Creattime:2024/1/31
#FileName:06-布局plus
#Description: 水平布局和垂直布局
'''
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QGroupBox, QVBoxLayout, QHBoxLayout, QRadioButtonclass MyWindow(QWidget):def __init__(self):super().__init__()self.init_ui()def init_ui(self):# 最外层的垂直布局,包含两部分:爱好和性别container = QVBoxLayout()# -----创建第1个组,添加多个组件-----# hobby 主要是保证他们是一个组。hobby_box = QGroupBox("爱好")# v_layout 保证三个爱好是垂直摆放v_layout = QVBoxLayout()btn1 = QRadioButton("抽烟")btn2 = QRadioButton("喝酒")btn3 = QRadioButton("烫头")# 添加到v_layout中v_layout.addWidget(btn1)v_layout.addWidget(btn2)v_layout.addWidget(btn3)# 把v_layout添加到hobby_box中hobby_box.setLayout(v_layout)# -----创建第2个组,添加多个组件-----# 性别组gender_box = QGroupBox("性别")# 性别容器h_layout = QHBoxLayout()# 性别选项btn4 = QRadioButton("男")btn5 = QRadioButton("女")# 追加到性别容器中h_layout.addWidget(btn4)h_layout.addWidget(btn5)# 添加到 box中gender_box.setLayout(h_layout)# 把爱好的内容添加到容器中container.addWidget(hobby_box)# 把性别的内容添加到容器中container.addWidget(gender_box)# 设置窗口显示的内容是最外层容器self.setLayout(container)if __name__ == '__main__':app = QApplication(sys.argv)w = MyWindow()w.show()app.exec()

补充一点Python的知识
这是一个使用PyQt5库的简单的Python类定义。这个类叫做MyWindow,它继承自QWidgetQWidget是所有用户界面对象的基类【父类】。这个类有一个构造函数和一个名为init_ui的方法。

让我们详细看一下这个类的组成部分:

  • __init__(self): 这是类的构造函数,当你创建一个新的MyWindow对象时,它会被自动调用。super().__init__()是调用父类(在这里是QWidget)的构造函数,这是在Python中创建子类的常见做法。
  • self.init_ui(): 这是在构造函数中调用的一个方法。这个方法应该是用来初始化用户界面的。

运行结果

在这里插入图片描述

结构解释
在这里插入图片描述

7.3九宫格布局-QGridLayout

代码
'''
#Author :susocool
#Creattime:2024/1/31
#FileName:07-九宫格布局
#Description: 计算器的布局
'''
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QLineEdit, QGridLayoutclass MyWindow(QWidget):def __init__(self):super().__init__()self.init_ui()def init_ui(self):self.setWindowTitle("计算器")# 准备数据data = {0: ["7", "8", "9", "+", "("],1: ["4", "5", "6", "-", ")"],2: ["1", "2", "3", "*", "<-"],3: ["0", ".", "=", "/", "C"]}# 整体垂直布局layout = QVBoxLayout()# 输入框edit = QLineEdit()edit.setPlaceholderText("请输入内容")# 把输入框添加到容器中layout.addWidget(edit)# 网格布局grid = QGridLayout()# 循环创建追加进去for line_number, line_data in data.items():# 此时line_number是第几行,line_data是当前行的数据for col_number, number in enumerate(line_data):# 此时col_number是第几列,number是要显示的符号btn = QPushButton(number)# grid.addWidget(btn)grid.addWidget(btn, line_number, col_number)# 把网格布局追加到容器中layout.addLayout(grid)self.setLayout(layout)if __name__ == '__main__':app = QApplication(sys.argv)w = MyWindow()w.show()app.exec()
运行结果

在这里插入图片描述

7.4表单 -QFormLayout

一般适用于提交数据form表单。比如: 登录,注册类似的场景

登入界面代码
'''
#Author :susocool
#Creattime:2024/1/31
#FileName:08-表单
#Description: simple introdution of the code'''
import sysfrom PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QVBoxLayout, QFormLayout, QLineEdit, QPushButton, QApplication, QWidgetclass MyWindow(QWidget):def __init__(self):super().__init__()self.init_ui()def init_ui(self):# 设定当前Widget的宽高(可以拉伸大小)# self.resize(300, 200)# 禁止改变宽高(不可以拉伸)self.setFixedSize(300, 150)# 外层容器container = QVBoxLayout()# 表单容器form_layout = QFormLayout()# 创建1个输入框edit = QLineEdit()edit.setPlaceholderText("请输入账号")form_layout.addRow("账号:", edit)# 创建另外1个输入框edit2 = QLineEdit()edit2.setPlaceholderText("请输入密码")form_layout.addRow("密码:", edit2)# 将from_layout添加到垂直布局器中container.addLayout(form_layout)# 按钮login_btn = QPushButton("登录")login_btn.setFixedSize(100, 30)# 把按钮添加到容器中,并且指定它的对齐方式container.addWidget(login_btn, alignment=Qt.AlignRight)# 设置当前Widget的布局器,从而显示这个布局器中的子控件self.setLayout(container)if __name__ == '__main__':app = QApplication(sys.argv)w = MyWindow()w.show()app.exec()

resize:设定当前Widget的宽高(用户可以拉伸大小)
setFixedSize禁止改变宽高(用户不可以拉伸)

运行结果

在这里插入图片描述

7.5 抽屉布局-QStackedLayout

提供了多页面切换的布局,一次只能看到一个界面。 抽屉布局

切换界面代码
'''
#Author :susocool
#Creattime:2024/1/31
#FileName:09-切换界面
#Description: 切换界面展示
'''
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QStackedLayout, QLabelclass Window1(QWidget):def __init__(self):super().__init__()QLabel("我是抽屉1要显示的内容", self)self.setStyleSheet("background-color:green;")class Window2(QWidget):def __init__(self):super().__init__()QLabel("我是抽屉2要显示的内容", self)self.setStyleSheet("background-color:red;")class MyWindow(QWidget):def __init__(self, parent=None):super().__init__(parent)self.create_stacked_layout()self.init_ui()def create_stacked_layout(self):# 创建堆叠(抽屉)布局self.stacked_layout = QStackedLayout()# 创建单独的Widgetwin1 = Window1()win2 = Window2()# 将创建的2个Widget添加到抽屉布局器中self.stacked_layout.addWidget(win1)self.stacked_layout.addWidget(win2)def init_ui(self):# 设置Widget大小以及固定宽高self.setFixedSize(300, 270)# 1. 创建整体的布局器container = QVBoxLayout()# 2. 创建1个要显示具体内容的子Widgetwidget = QWidget()widget.setLayout(self.stacked_layout)widget.setStyleSheet("background-color:grey;")# 3. 创建2个按钮,用来点击进行切换抽屉布局器中的Widgetbtn_press1 = QPushButton("抽屉1")btn_press2 = QPushButton("抽屉2")# 给按钮添加事件(即点击后要调用的函数)btn_press1.clicked.connect(self.btn_press1_clicked)btn_press2.clicked.connect(self.btn_press2_clicked)# 4. 将需要显示的空间添加到布局器中container.addWidget(widget)container.addWidget(btn_press1)container.addWidget(btn_press2)# 5. 设置当前要显示的Widget,从而能够显示这个布局器中的控件self.setLayout(container)def btn_press1_clicked(self):# 设置抽屉布局器的当前索引值,即可切换显示哪个Widgetself.stacked_layout.setCurrentIndex(0)def btn_press2_clicked(self):# 设置抽屉布局器的当前索引值,即可切换显示哪个Widgetself.stacked_layout.setCurrentIndex(1)if __name__ == "__main__":app = QApplication(sys.argv)win = MyWindow()win.show()app.exec()
运行结果

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

8、窗口

一、分类
在Qt中,生成窗口有三种方式: QWidget 、QMainWindow、QDialog

  1. QWidget
    控件和窗口的父类 ,自由度高(什么都东西都没有),没有划分菜单、工具栏、状态栏、主窗口 等区域

  2. QMainWindow
    是 QWidget的子类,包含菜单栏,工具栏,状态栏,标题栏等,中间部分则为主窗口区域

  3. QDialog
    对话框窗口的基类

8.1 QWidget

import  sysfrom PyQt5.QtWidgets import QWidget, QLabel , QApplicationclass mywnd(QWidget):def __init__(self):super(mywnd, self).__init__()self.initUI()def initUI(self):label = QLabel("这是文字~~" )label.setStyleSheet("font-size:30px;color:red")label.setParent(self)if __name__ == '__main__':app = QApplication(sys.argv)w = mywnd()#设置窗口标题w.setWindowTitle("qwidget")# 展示窗口w.show()# 程序进行循环等待状态app.exec()

运行结果

在这里插入图片描述

8.2 QMainWindow

对话窗口代码
'''
#Author :susocool
#Creattime:2024/1/31
#FileName:10-窗口
#Description: '''
import sysfrom PyQt5.QtWidgets import QMainWindow, QLabel, QApplicationclass MyWindow(QMainWindow):def __init__(self):super().__init__()self.init_ui()def init_ui(self):label = QLabel("这是文字~~")label.setStyleSheet("font-size:30px;color:red")# 调用父类中的menuBar,从而对菜单栏进行操作menu = self.menuBar()# 如果是Mac的话,菜单栏不会在Window中显示而是屏幕顶部系统菜单栏位置# 下面这一行代码使得Mac也按照Windows的那种方式在Window中显示Menumenu.setNativeMenuBar(False)file_menu = menu.addMenu("文件")file_menu.addAction("新建")file_menu.addAction("打开")file_menu.addAction("保存")edit_menu = menu.addMenu("编辑")edit_menu.addAction("复制")edit_menu.addAction("粘贴")edit_menu.addAction("剪切")# 设置中心内容显示self.setCentralWidget(label)if __name__ == '__main__':app = QApplication(sys.argv)w = MyWindow()# 设置窗口标题w.setWindowTitle("我是窗口标题....")# 展示窗口w.show()# 程序进行循环等待状态app.exec()

在这里插入图片描述

8.3 QDialog

不过对话框一般不应该作为主窗口的存在,而是通过点击操作弹出,起到提示作用。

'''
#Author :susocool
#Creattime:2024/1/31
#FileName:10-窗口
#Description: '''
import sysfrom PyQt5.QtWidgets import QDialog, QPushButton, QApplicationclass MyDialog(QDialog):def __init__(self):super().__init__()self.init_ui()def init_ui(self):ok_btn = QPushButton("确定", self)ok_btn.setGeometry(50, 50, 100, 30)if __name__ == '__main__':app = QApplication(sys.argv)w = MyDialog()# 设置窗口标题w.setWindowTitle("对话框")# 展示窗口w.show()# 程序进行循环等待状态app.exec()
运行结果

在这里插入图片描述


总结

这篇博文介绍一下基本的UI这么写~

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

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

相关文章

Django模型(二)

一、更新数据库表结构 不管是新增模型,还是修改已有模型后,只需要执行行命令即可: 1.1、创建迁移 在项目根目录的cmd中运行: $ python manage.py makemigrations model_app备注 model_app是子应用的名称,如果不指定,那么就是对所有 INSTALLED_APPS 中的应用都进行预备…

开发数据产品+AI产品通关上岸课程

该课程全面解析数据产品和人工智能产品的开发与设计。学员将学习产品规划、数据分析以及AI技术应用&#xff0c;通过案例实践掌握产品开发流程&#xff0c;致力于帮助他们成功进入数据和人工智能产品领域。 课程大小&#xff1a;9.8G 课程下载&#xff1a;https://download.cs…

Java多线程共享变量控制volatile

1. volatile实现可见性&#xff08;jdk 1.5后&#xff09; 1. 可见性 如果一个线程对共享变量值的修改&#xff0c;能够及时的被其他线程看到&#xff0c;叫做共享变量的可见性。如果一个变量同时在多个线程的工作内存中存在副本&#xff0c;那么这个变量就叫共享变量 volati…

如何从零开始开发一个PS5浏览器 | How to develop a PS5 browser

环境&#xff1a;Windows PS5一台 问题&#xff1a;PS5折腾需要使用PKG浏览器访问特定网址&#xff0c;如何自定义网址呢&#xff1f; 解决办法&#xff1a;使用开发套件PS Multi Tools开发一个空应用&#xff0c;利于deeplinkUri 参数访问网页 背景&#xff1a;PS5折腾后&…

dockerpipwork相关测试过程

pipework可以减轻docker实施过程中的工作量&#xff0c;在网上也找了几篇类似的文章&#xff0c;按照相应配置&#xff0c;结果并不相同 如下测试过程记录下&#xff1a; docker run -it --rm --name c1 busybox docker run -it --rm --name c2 busyboxpipework br1 c1 192…

Altium Designer的学习

PCB设计流程 1.新建空白工程&#xff1a; 创建一个新的工程 新建四个文件&#xff0c;并且保存&#xff1a; 每次打开文件时&#xff0c;打开以.PrjPcb结尾的文件 2.元件符号的创建&#xff1a; 在绘制图形的时候设置成10mil,为了在原理图中显得不那么大。 在绘制引脚的时候设…

拦截器,AOP,自定义注解的使用

自定义注解AOP&#xff0c;实现 进入方法打印参数日志 /*** 定义进入方法前打印日志注解* author zy*/ Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) Documented public interface PrintLog {} /*** 定义一个切面&#xff0c;在使用PrintLog注解的方法进…

Hadoop3.x基础(2)- HDFS

来源&#xff1a;B站尚硅谷 目录 HDFS概述HDFS产出背景及定义HDFS优缺点HDFS组成架构HDFS文件块大小&#xff08;面试重点&#xff09; HDFS的Shell操作&#xff08;开发重点&#xff09;基本语法命令大全常用命令实操准备工作上传下载HDFS直接操作 HDFS的API操作HDFS的API案例…

springboot 怎么设置局域网访问

如何配置Spring Boot应用以实现局域网访问 在开发一个Spring Boot应用时&#xff0c;我们通常会通过localhost来访问和测试我们的应用。但是&#xff0c;当我们想要在局域网中分享我们的应用&#xff0c;供其他设备访问时&#xff0c;仅仅使用localhost是不够的。本文将引导你…

Linux系统卸载重装JDK

CentOS 系统是开发者常用的 Linux 操作系统&#xff0c;安装它时会默认安装自带的旧版本的 OpenJDK&#xff0c;但在开发者平时开发 Java 项目时还是需要完整的 JDK&#xff0c;所以我们部署 CentOS 开发环境时&#xff0c;需要先卸载系统自带的 OpenJDK&#xff0c;再重新安装…

汽车销量可视化分析

目录 一.分析的背景、目的、意义 1、背景 2、目的 3、意义 二.数据来源 三.图表分析 1、汽车品牌销量柱状图 2、中国汽车销量柱状图 3、汽车销量前10排行柱状图 4、汽车厂商销量折线图 ​编辑5、汽车销量词云图 6、汽车车型销量 7、汽车价格分布雷达图 8、汽车分…

免费的ChatGPT网站(7个)

还在为找免费的chatGPT网站或者应用而烦恼吗&#xff1f;博主归纳总结了7个国内非常好用&#xff0c;而且免费的chatGPT网站&#xff0c;AI语言大模型&#xff0c;我们都来接触一下吧。 免费&#xff01;免费&#xff01;免费&#xff01;...&#xff0c;建议收藏保存。 1&…

深入浅出HBase:一文理解HBase基础概念(列存储、时间戳、key-value)、架构特点以及适合的使用场景

文章目录 一. HBase 数据模型1. 行存储与列式存储1.1. 行存储1.2. 列存储 2. HBase 数据模型2.1. 模型概览2.2. 列与列族2.3. 时间戳&#xff1a;定义数据版本2.4. HBase的Key-Value 三. HBase架构1. HBase读写流程简述2. HRegionServer内部内部数据流转&#xff1a;HRegion &l…

Web前端入门 - HTML JavaScript Vue

ps&#xff1a;刚开始学习web前端开发&#xff0c;有什么不正确、不标准的内容&#xff0c;欢迎大家指出~ Web简介 90年代初期&#xff0c;Web1.0&#xff0c;静态页面&#xff0c;不和服务器交互&#xff0c;网页三剑客指Dreamweaver、Fireworks、Flash2000年代中期&#xf…

MySQL事务隔离级别

什么是事务? 事务是逻辑上的一组操作&#xff0c;要么都执行&#xff0c;要么都不执行。 事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账1000元&#xff0c;这个转账会涉及到两个关键操作就是&#xff1a;将小明的余额减少1000元&#xff0c;将小红的余额…

如何将Mac连接到以太网?这里有详细步骤

在Wi-Fi成为最流行、最简单的互联网连接方式之前&#xff0c;每台Mac和电脑都使用以太网电缆连接。这是Mac可用端口的标准功能。 如何将Mac连接到以太网 如果你的Mac有以太网端口&#xff0c;则需要以太网电缆&#xff1a; 1、将电缆一端接入互联网端口&#xff08;可以在墙…

正则表达式补充以及sed

正则表达式&#xff1a; 下划线算 在单词里面 解释一下过程&#xff1a; 在第二行hello world当中&#xff0c;hello中的h 与后面第一个h相匹配&#xff0c;所以hello中的ello可以和abcde匹配 在world中&#xff0c;w先匹配h匹配不上&#xff0c;则在看0&#xff0c;r&#…

前端开发基于Qunee绘制网络拓扑图总结-02

1、渲染连线颜色 *关键函数一定要调用&#xff1a;graph.invalidate()* graph.forEach(function(element) {if (element instanceof Q.Edge) {let arr [#549BF1, #AA8A6E, #8F54F1,#5A70BC,#BCBF5C, #BC5A76, #67B4D4,#B4C9EF, #676AD4, #A86EAA,#5CBF7F, #EFB4B4];let inde…

回归预测 | Matlab实现CPO-LSSVM冠豪猪算法优化最小二乘支持向量机多变量回归预测

回归预测 | Matlab实现CPO-LSSVM冠豪猪算法优化最小二乘支持向量机多变量回归预测 目录 回归预测 | Matlab实现CPO-LSSVM冠豪猪算法优化最小二乘支持向量机多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现CPO-LSSVM冠豪猪算法优化最小二乘支持向…

使用 Python 进行自然语言处理第 3 部分:使用 Python 进行文本预处理

一、说明 文本预处理涉及许多将文本转换为干净格式的任务&#xff0c;以供进一步处理或与机器学习模型一起使用。预处理文本所需的具体步骤取决于具体数据和您手头的自然语言处理任务。 常见的预处理任务包括&#xff1a; 文本规范化——将文本转换为标准表示形式&#xff0c;…