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

文章目录

    • 1. 状态栏
    • 2. 窗口居中显示
    • 3. 关闭窗口
    • 4. QWidget
    • 5. 添加图标
    • 6. 气泡提示信息
    • 7. QLabel
      • 添加快捷键
    • 8. QLineEdit
      • echoMode
      • 验证器
      • inputMask
      • 综合练习
    • 9. QTextEdit

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

1. 状态栏

  • self.statusbar.showMessage("hello, Michael", 2000),第二个参数是显示多长时间ms,默认无限长时间
# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'D:\gitcode\Python_learning\qt\ch4\status_bar1.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.from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(330, 223)self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.statusbar.showMessage("hello, Michael")self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "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_())

在这里插入图片描述

2. 窗口居中显示

class Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(330, 223)self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.statusbar.showMessage("hello, Michael", 2000)MainWindow.setWindowTitle("center_display1")# 居中显示self.center_display(MainWindow)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)def center_display(self, MainWindow):# 获取屏幕大小screen = QDesktopWidget().screenGeometry() # 获取窗口大小size = MainWindow.geometry()# 移动窗口到中心 即 1/2 的位置MainWindow.move((screen.width() - size.width()) // 2, (screen.height() - size.height()) // 2)

3. 关闭窗口

import time
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QHBoxLayoutclass Ui_MainWindow(QMainWindow):def __init__(self):super(Ui_MainWindow, self).__init__()self.setWindowTitle("michael close window")self.resize(400, 300)self.closeButton = QtWidgets.QPushButton("关闭窗口按钮!!")self.closeButton.setGeometry(QtCore.QRect(110, 190, 91, 31))self.closeButton.setObjectName("closeButton")layout = QHBoxLayout()layout.addWidget(self.closeButton)main_frame = QtWidgets.QWidget()main_frame.setLayout(layout)self.setCentralWidget(main_frame)# 关闭窗口self.closeButton.clicked.connect(self.onClick)def onClick(self):sender = self.sender()print(sender.text() + "被点击了")# 关闭窗口按钮!!被点击了time.sleep(2)self.close()if __name__ == "__main__":import sysapp = QtWidgets.QApplication(sys.argv)win = Ui_MainWindow()win.show()sys.exit(app.exec_())

在这里插入图片描述

4. QWidget

  • QWidget是最底层的基类
# _*_ coding: utf-8 _*_
# @Time : 2022/5/3 9:45
# @Author : Michael
# @File : screen_geometry1.py
# @desc :
from PyQt5.QtWidgets import QWidget, QDesktopWidget, QApplication, QPushButton
import sysapp = QApplication(sys.argv)
widget = QWidget()
btn = QPushButton('点击我', parent=widget)
btn.move(100, 50)
btn.resize(180, 30)
widget.resize(300, 300)
widget.move(150, 300)
widget.setWindowTitle('我的窗口')
widget.setFixedWidth(300)  # 固定宽度widget.show()
print('w.x() = ', widget.x())
print('w.y() = ', widget.y())
print('w.width() = ', widget.width())
print('w.height() = ', widget.height())
print('w.geometry() = ', widget.geometry())
print('w.geometry().x() = ', widget.geometry().x())
print('w.geometry().y() = ', widget.geometry().y())
print('w.geometry().width() = ', widget.geometry().width())
print('w.geometry().height() = ', widget.geometry().height())
print('w.frameGeometry() = ', widget.frameGeometry())
print('w.frameGeometry().x() = ', widget.frameGeometry().x())
print('w.frameGeometry().y() = ', widget.frameGeometry().y())
print('w.frameGeometry().width() = ', widget.frameGeometry().width())
print('w.frameGeometry().height() = ', widget.frameGeometry().height())
print('w.pos() = ', widget.pos())
sys.exit(app.exec_())
w.x() =  150
w.y() =  300
w.width() =  300
w.height() =  300
w.geometry() =  PyQt5.QtCore.QRect(151, 331, 300, 300)
w.geometry().x() =  151
w.geometry().y() =  331
w.geometry().width() =  300
w.geometry().height() =  300
w.frameGeometry() =  PyQt5.QtCore.QRect(150, 300, 302, 332)
w.frameGeometry().x() =  150
w.frameGeometry().y() =  300
w.frameGeometry().width() =  302
w.frameGeometry().height() =  332
w.pos() =  PyQt5.QtCore.QPoint(150, 300)

5. 添加图标

https://www.iconfont.cn

from PyQt5.QtGui import QIcon
widget.setWindowIcon(QIcon('logo.png'))

在这里插入图片描述

6. 气泡提示信息

from PyQt5.QtGui import QIcon, QFont
from PyQt5.QtWidgets import QWidget, QDesktopWidget, QApplication, QPushButton, QToolTipQToolTip.setFont(QFont('SansSerif', 10))
widget.setToolTip('这是一个<b>气泡提示</b>')

在这里插入图片描述

7. QLabel

# _*_ coding: utf-8 _*_
# @Time : 2022/5/3 13:45
# @Author : Michael
# @File : qlabel1.py
# @desc :
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPalette, QPixmap
from PyQt5.QtWidgets import QWidget, QLabel, QVBoxLayout, QApplicationclass window_qlabel(QWidget):def __init__(self):super().__init__()label1 = QLabel()label2 = QLabel()label3 = QLabel()label4 = QLabel()label1.setText("<font color=red>这是一个红色的文本</font>")label1.setAutoFillBackground(True)palette = QPalette()palette.setColor(QPalette.Window, Qt.blue) # 设置背景色label1.setPalette(palette) # 设置背景色label1.setAlignment(Qt.AlignCenter) # 设置文本对齐方式label1.setTextInteractionFlags(Qt.TextSelectableByMouse) # 设置文本可选label2.setText("<a href='#'>michael 学习 PyQt</a>")label2.linkActivated.connect(self.link_clicked) # 连接鼠标点击信号label4.setText("<a href='http://michael.blog.csdn.net'>michael的博客</a>")label4.setOpenExternalLinks(True) # 设置打开外部链接label4.setToolTip("欢迎访问!") # 设置鼠标悬停提示label4.linkHovered.connect(self.link_hovered) # 连接鼠标悬停信号label3.setAlignment(Qt.AlignCenter) # 设置文本对齐方式label3.setToolTip('提示:这是一张图片哦') # 设置鼠标悬停提示label3.setPixmap(QPixmap('logo.png'))   # 设置图片vbox = QVBoxLayout()vbox.addWidget(label1)vbox.addStretch()vbox.addWidget(label2)vbox.addStretch()vbox.addWidget(label3)vbox.addStretch()vbox.addWidget(label4)self.setLayout(vbox)self.setWindowTitle("QLabel 示例")def link_hovered(self):print("鼠标悬停")def link_clicked(self):print("鼠标点击")if __name__ == '__main__':import sysapp = QApplication(sys.argv)win = window_qlabel()win.show()sys.exit(app.exec_())

在这里插入图片描述

添加快捷键

# _*_ coding: utf-8 _*_
# @Time : 2022/5/4 9:10
# @Author : Michael
# @File : qlabel_hotkey1.py
# @desc :import sys
from PyQt5.QtWidgets import QWidget, QLabel, QApplication, QDialog, QLineEdit, QPushButton, QGridLayoutclass Qlabel_hotkey1(QDialog):def __init__(self):super().__init__()self.setWindowTitle("QLabel_hotkey1 demo")nameLabel1 = QLabel("&Name") # 必须加& 否则不能绑定快捷键nameLineEdit1 = QLineEdit()nameLabel1.setBuddy(nameLineEdit1) # 设置名称标签和输入框的关联nameLabel2 = QLabel("&Password")nameLineEdit2 = QLineEdit()nameLabel2.setBuddy(nameLineEdit2)submit_btn = QPushButton("&Submit")cancel_btn = QPushButton("&Cancel")layout = QGridLayout(self)layout.addWidget(nameLabel1, 0, 0)layout.addWidget(nameLineEdit1, 0, 1, 1, 2)layout.addWidget(nameLabel2, 1, 0)layout.addWidget(nameLineEdit2, 1, 1, 1, 2)layout.addWidget(submit_btn, 2, 1)layout.addWidget(cancel_btn, 2, 2)if __name__ == "__main__":app = QApplication(sys.argv)w = Qlabel_hotkey1()w.show()sys.exit(app.exec_())

使用 alt + 绑定的首字母(N、P、S、C)进行切换
在这里插入图片描述

8. QLineEdit

  • 单行文本框,多行使用 QTextEdit

常用的信号:

  • selectionChanged 选择改变了,就发射信号
  • textChanged 修改文本内容时
  • editingFinished 编辑文本结束时

echoMode

# _*_ coding: utf-8 _*_
# @Time : 2022/5/4 14:26
# @Author : Michael
# @File : line_edit1.py
# @desc :from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit, QLabel, QFormLayout
import sysclass lineEditDemo(QWidget):def __init__(self):super().__init__()self.setWindowTitle("lineEditDemo")layout = QFormLayout()normalLineEdit = QLineEdit()noEchoLineEdit = QLineEdit()passwordLineEdit = QLineEdit()passwordEchoOnEditLineEdit = QLineEdit()layout.addRow("Normal LineEdit", normalLineEdit)layout.addRow("No Echo LineEdit", noEchoLineEdit)layout.addRow("Password LineEdit", passwordLineEdit)layout.addRow("Password Echo On Edit LineEdit", passwordEchoOnEditLineEdit)normalLineEdit.setPlaceholderText("Normal LineEdit")noEchoLineEdit.setPlaceholderText("No Echo LineEdit")passwordLineEdit.setPlaceholderText("Password LineEdit")passwordEchoOnEditLineEdit.setPlaceholderText("Password Echo On Edit LineEdit")normalLineEdit.setEchoMode(QLineEdit.Normal)noEchoLineEdit.setEchoMode(QLineEdit.NoEcho)passwordLineEdit.setEchoMode(QLineEdit.Password)passwordEchoOnEditLineEdit.setEchoMode(QLineEdit.PasswordEchoOnEdit)self.setLayout(layout)
if __name__=='__main__':app = QApplication(sys.argv)main = lineEditDemo()main.show()sys.exit(app.exec_())

在这里插入图片描述

验证器

# _*_ coding: utf-8 _*_
# @Time : 2022/5/4 15:23
# @Author : Michael
# @File : validator1.py
# @desc :
from PyQt5.QtCore import QRegExp
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QHBoxLayout, QVBoxLayout, QFormLayout
from PyQt5.QtGui import QIntValidator, QDoubleValidator, QRegExpValidator
import sysclass lineEditDemo1(QWidget):def __init__(self):super().__init__()self.setWindowTitle('lineEditDemo1 验证器')layout = QFormLayout()intLineEdit = QLineEdit()doubleLineEdit = QLineEdit()validatorLineEdit = QLineEdit()layout.addRow('整数', intLineEdit)layout.addRow('浮点数', doubleLineEdit)layout.addRow('字母和数字', validatorLineEdit)intLineEdit.setPlaceholderText('整数')doubleLineEdit.setPlaceholderText('浮点数')validatorLineEdit.setPlaceholderText('字母和数字')intValidator = QIntValidator(self)intValidator.setRange(1,99)doubleValidator = QDoubleValidator(self)doubleValidator.setRange(-100, 100)doubleValidator.setNotation(QDoubleValidator.StandardNotation)doubleValidator.setDecimals(2)regValidator = QRegExpValidator(QRegExp('[a-zA-Z0-9]+$'), self)intLineEdit.setValidator(intValidator)doubleLineEdit.setValidator(doubleValidator)validatorLineEdit.setValidator(regValidator)self.setLayout(layout)if __name__ == '__main__':app = QApplication(sys.argv)main = lineEditDemo1()main.show()sys.exit(app.exec_())

在这里插入图片描述

inputMask

# _*_ coding: utf-8 _*_
# @Time : 2022/5/4 15:48
# @Author : Michael
# @File : inputMask1.py
# @desc :
from PyQt5.QtWidgets import QWidget, QFormLayout, QLineEditclass inputmask(QWidget):def __init__(self):super().__init__()self.setWindowTitle("输入掩码")layout = QFormLayout()ip_lineEdit = QLineEdit()mac_lineEdit = QLineEdit()date_lineEdit = QLineEdit()licence_lineEdit = QLineEdit()ip_lineEdit.setInputMask("000.000.000.000;_")mac_lineEdit.setInputMask("HH:HH:HH:HH:HH:HH;_")date_lineEdit.setInputMask("0000-00-00")licence_lineEdit.setInputMask(">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#")layout.addRow("IP地址", ip_lineEdit)layout.addRow("MAC地址", mac_lineEdit)layout.addRow("日期", date_lineEdit)layout.addRow("许可证", licence_lineEdit)self.setLayout(layout)if __name__ == '__main__':import sysfrom PyQt5.QtWidgets import QApplicationapp = QApplication(sys.argv)win = inputmask()win.show()sys.exit(app.exec_())

在这里插入图片描述

综合练习

# _*_ coding: utf-8 _*_
# @Time : 2022/5/4 16:22
# @Author : Michael
# @File : text_example.py
# @desc :
from PyQt5.QtGui import QIntValidator, QFont, QDoubleValidator
from PyQt5.QtWidgets import QWidget, QLineEdit, QFormLayout
from PyQt5.QtCore import Qtclass lineEdit_demo(QWidget):def __init__(self):super(lineEdit_demo, self).__init__()e1 = QLineEdit()e1.setValidator(QIntValidator())e1.setMaxLength(4)e1.setAlignment(Qt.AlignRight)e1.setFont(QFont("Arial", 20))e2 = QLineEdit()e2.setValidator(QDoubleValidator(0.99, 99.99, 2))layout = QFormLayout()layout.addRow("整数验证器", e1)layout.addRow("浮点数验证器", e2)e3 = QLineEdit()e3.setInputMask("+99_9999_999999")layout.addRow("输入掩码", e3)e4 = QLineEdit()e4.textChanged.connect(self.text_changed)layout.addRow("文本改变", e4)e5 = QLineEdit()e5.setEchoMode(QLineEdit.Password)e5.editingFinished.connect(self.enterPress)layout.addRow("密码模式", e5)e6 = QLineEdit("Hello world, michael")e6.setReadOnly(True)layout.addRow("只读", e6)self.setLayout(layout)self.setWindowTitle("QLineEdit控件")def text_changed(self, text):print('输入的内容:', text)def enterPress(self):print("已输入内容")if __name__ == '__main__':import sysfrom PyQt5.QtWidgets import QApplicationapp = QApplication(sys.argv)main = lineEdit_demo()main.show()sys.exit(app.exec_())

在这里插入图片描述

9. QTextEdit

  • 多行文本,超出显示范围可以显示水平或者垂直滚动条,还可以显示 HTML
# _*_ coding: utf-8 _*_
# @Time : 2022/5/4 19:24
# @Author : Michael
# @File : text_edit1.py
# @desc :
from PyQt5.QtWidgets import QWidget, QTextEdit, QPushButton, QVBoxLayout, QApplicationclass textEdit1(QWidget):def __init__(self):super().__init__()self.setWindowTitle('多行文本例子')self.resize(300, 200)self.textEdit = QTextEdit()self.btn1 = QPushButton('显示文本')self.btn2 = QPushButton('显示HTML')self.btn1.clicked.connect(self.btn1_clicked)self.btn2.clicked.connect(self.btn2_clicked)layout = QVBoxLayout()layout.addWidget(self.textEdit)layout.addWidget(self.btn1)layout.addWidget(self.btn2)self.setLayout(layout)def btn1_clicked(self):self.textEdit.setPlainText('Hello Michael!')def btn2_clicked(self):self.textEdit.setHtml("<font color='red' size='10'>Hello Michael!<br>点击按钮</font><br><br><br><br><a href='https://michael.blog.csdn.net/'>访问我的博客</a>")if __name__ == '__main__':import sysapp = QApplication(sys.argv)ui = textEdit1()ui.show()sys.exit(app.exec_())

在这里插入图片描述

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

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

相关文章

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…

python网络爬虫系列(二)——ProxyHandler处理器实现代理IP

ProxyHandler处理器&#xff08;代理&#xff09;&#xff1a; 很多网站会检测某一段时间某个IP的访问次数&#xff08;通过流量统计&#xff0c;系统日志等&#xff09;&#xff0c;如果访问次数多的不像正常人&#xff0c;它会禁止这个lP的访问。 所以我们可以设置一些代理服…

LeetCode 2264. 字符串中最大的 3 位相同数字

文章目录1. 题目2. 解题1. 题目 给你一个字符串 num &#xff0c;表示一个大整数。如果一个整数满足下述所有条件&#xff0c;则认为该整数是一个 优质整数 &#xff1a; 该整数是 num 的一个长度为 3 的 子字符串 。该整数由唯一一个数字重复 3 次组成。 以字符串形式返回 …

四则运算个人项目进展

一、项目要求 基本要求&#xff1a;将10-20道四则运算题目写入文档&#xff0c;程序读取并输出题目&#xff0c;同时计算出正确结果。使用者对每道题目计算答案&#xff0c;答对进行提示&#xff0c;答错输出正确结果。分别记录回答正确、错误的数目并输出。四则运算题目基本要…

python网络爬虫系列(一)——urllib库(urlopen、urlretrieve、urlencode、parse-qs、urlparse和urlsplit、request.Request类)

urllib库 urllib库是Python中一个最基本的网络请求库。可以模拟浏览器的行为&#xff0c;向指定的服务器发送一个请求&#xff0c;并可以保存服务器返回的数据。 一、urlopen函数&#xff1a; 在Python3的urllib库中&#xff0c;所有和网络请求相关的方法&#xff0c;都被集…

LeetCode 2265. 统计值等于子树平均值的节点数(DFS)

文章目录1. 题目2. 解题1. 题目 给你一棵二叉树的根节点 root &#xff0c;找出并返回满足要求的节点数&#xff0c;要求节点的值等于其 子树 中值的 平均值 。 注意&#xff1a; n 个元素的平均值可以由 n 个元素 求和 然后再除以 n &#xff0c;并 向下舍入 到最近的整数。…

LeetCode 2267. 检查是否有合法括号字符串路径(BFS)

文章目录1. 题目2. 解题1. 题目 一个括号字符串是一个 非空 且只包含 ( 和 ) 的字符串。 如果下面 任意 条件为 真 &#xff0c;那么这个括号字符串就是 合法的 。 字符串是 () 。字符串可以表示为 AB&#xff08;A 连接 B&#xff09;&#xff0c;A 和 B 都是合法括号序列。…

python网络爬虫系列(三)——cookie的原理、保存与加载

一、什么是cookie&#xff1f; 在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。 cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当…

LeetCode 2266. 统计打字方案数(动态规划)

文章目录1. 题目2. 解题1. 题目 Alice 在给 Bob 用手机打字。数字到字母的 对应 如下图所示。 为了 打出 一个字母&#xff0c;Alice 需要 按 对应字母 i 次&#xff0c;i 是该字母在这个按键上所处的位置。 比方说&#xff0c;为了按出字母 s &#xff0c;Alice 需要按 7 四…

大学毕业4年-回顾和总结(2)-钱,收入和支出

过年回家&#xff0c;长辈最喜欢问两件事。第一件事&#xff0c;谈朋友没有啊。第二件事&#xff0c;现在一个月搞多少钱。 如果你和他们说&#xff0c;一个月工资是1万&#xff0c;那么他们立刻认为&#xff0c;你现在手上应该有十多万了。 上班族听了&#xff0c;心里…

python网络爬虫系列(四)——requests模块

requests模块 知识点&#xff1a; 掌握 headers参数的使用掌握 发送带参数的请求掌握 headers中携带cookie掌握 cookies参数的使用掌握 cookieJar的转换方法掌握 超时参数timeout的使用掌握 代理ip参数proxies的使用掌握 使用verify参数忽略CA证书掌握 requests模块发送post请…

PyQt5 基本窗口控件(绘图类 / 拖拽 / 剪贴板 / 日历时间 / 菜单、工具、状态栏 / 打印)

文章目录1. 窗口绘图类1.1 QPainter绘制文字绘制点1.2 QPen1.3 QBrush1.4 QPixmap2. 拖拽与剪贴板2.1 拖拽2.2 剪贴板 QClipboard3. 日历与时间3.1 QCalendar3.2 QDateTimeEdit4. 菜单栏、工具栏、状态栏4.1 菜单栏 QMenuBar4.2 工具栏 QToolBar4.3 状态栏 QStatusBar5. QPrint…

python网络爬虫系列(0)——爬虫概述 http协议复习

一、爬虫概述 知识点&#xff1a; 了解 爬虫的概念 了解 爬虫的作用 了解 爬虫的分类 掌握 爬虫的流程 1. 爬虫的概念 模拟浏览器&#xff0c;发送请求&#xff0c;获取响应 网络爬虫&#xff08;又被称为网页蜘蛛&#xff0c;网络机器人&#xff09;就是模拟客户端(主要指…

使用TFHpple解析html

https://github.com/topfunky/hpple 前期准备工作 引入静态库文件 添加库文件的 header search paths(注意,必须选中 All) 将从github上下载的源码包拖入工程当中 准备工作结束 使用详情 我们来解析网址 http://www.cnblogs.com/YouXianMing/ 中的title标签哦. 思路是这样子的:…

LeetCode 2269. 找到一个数字的 K 美丽值

文章目录1. 题目2. 解题1. 题目 一个整数 num 的 k 美丽值定义为 num 中符合以下条件的 子字符串 数目&#xff1a; 子字符串长度为 k 。子字符串能整除 num 。 给你整数 num 和 k &#xff0c;请你返回 num 的 k 美丽值。 注意&#xff1a; 允许有 前缀 0 。 0 不能整除任…

LeetCode 2270. 分割数组的方案数(前缀和)

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始长度为 n 的整数数组 nums 。 如果以下描述为真&#xff0c;那么 nums 在下标 i 处有一个 合法的分割 &#xff1a; 前 i 1 个元素的和 大于等于 剩下的 n - i - 1 个元素的和。下标 i 的右边 至少有一个 元素&#xff…

python网络爬虫系列(五)——数据提取 jsonpath模块

一、数据提取概述 知识点 了解 响应内容的分类了解 xml和html的区别 1. 响应内容的分类 在发送请求获取响应之后&#xff0c;可能存在多种不同类型的响应内容&#xff1b;而且很多时候&#xff0c;我们只需要响应内容中的一部分数据 结构化的响应内容 json字符串 可以使用re、…

LeetCode 2271. 毯子覆盖的最多白色砖块数(前缀和+二分查找)

文章目录1. 题目2. 解题1. 题目 给你一个二维整数数组 tiles &#xff0c;其中 tiles[i] [li, ri] &#xff0c;表示所有在 li < j < ri 之间的每个瓷砖位置 j 都被涂成了白色。 同时给你一个整数 carpetLen &#xff0c;表示可以放在 任何位置 的一块毯子。 请你返回…

Nimbus三Storm源码分析--Nimbus启动过程

Nimbus server, 首先从启动命令开始, 同样是使用storm命令"storm nimbus”来启动看下源码, 此处和上面client不同, jvmtype"-server", 最终调用"backtype.storm.daemon.nimbus"的mainnimbus是用clojure实现的, 但是clojure是基于JVM的, 所以在最终发布…