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_())
PyQt5 基本窗口控件(状态栏/窗口/图标/提示消息/QLabel/文本类控件)相关推荐
- 从零开始学Pyqt5之【控件介绍】(15):绘图类控件QPainter、QPen、QBrush、QPixMap
从零开始学Pyqt5之[控件介绍](15):绘图类控件QPainter.QPen.QBrush.QPixMap QPainter控件 QPainter控件的作用 QPainter控件常用方法 QPai ...
- 文本框控件TextBox(文本类控件)
文本框控件(TextBox)用于获取用户的输入数据或者显示文本.文本框控件(TextBox)通常用于可编辑文本,也可使其成为只读控件.文本框可以显示多个行,对文本换行使其符合控件大小. 文本框控件的部 ...
- 文本类控件(EditView 的介绍)
EditView的作用:用于在屏幕上显示文本输入框 Android的编辑框组件组件可以输入单行文本,多行文本,指定格式文本(密码,邮箱地址等) 2中使用方法 1 java代码中通过new关键字创建 2 ...
- 文本类控件 (TextView的介绍)
TextView的作用:用于在屏幕上显示文本 Android中的文本框组件可以显示单行文本,多行文本,也可以显示带图像的文本 使用的2中方法 1 java代码中通过new关键字创建 2 XML布局中使 ...
- Java文本控件型号_小博老师解析Java核心技术 ——JSwing文本型控件
[引言] 我们在学习Java编程的时候,如果需要开发客户端窗体类型的程序,可以使用JDK中的awt和swing库.本文开始小博老师就继续为大家演示Java窗体编程中的各类控件,今天主要讲解的是文本类型 ...
- winform html编辑器控件,一个WinForm富文本编辑器控件
WinForm 上的富文本编辑器简直不要太少,虽然有 RichEdit,但是这个鬼极难用而且复杂,在插入图片和表格的时候简直抓狂,还要理解复杂的 RTF 格式. 我希望有一个文本控件,包括基本的格式设 ...
- QT使用阿里巴巴矢量图标库设置窗口图标、菜单栏项图标、工具栏项图标、状态栏图标以及将控件设置为图标
在阿里巴巴矢量图标库官网上下载图标,具体操作在下方有讲解. 在QT项目中设置图标示例. 我总结了一下需要设置图标的地方大致分为5个,如下: 1. 设置窗口图标(利用setWindowIcon()属性实 ...
- qt android 浮动窗口,QT+ 状态栏+核心控件+浮动窗口
#include "mainwindow.h" #include #include #include #include //浮动窗口所需的头文件 MainWindow::MainW ...
- Qt实现类似Designer中的拖拽效果:从左侧树控件中拖动图标到右侧布局窗口
大家在Qt开发中都用过这样的拖动操作,从左边拖动一个控件到右侧的窗口.或是在其它很多软件使用中,都有把图标通过拖动布置到主画面的操作. 如何实现呢? 先看看Qt帮助中的一个实例: 这个例子自定义了一个 ...
最新文章
- 13-linux定时任务不起作用到的问题解决办法
- VMWare不能安装64位操作系统原因探析
- Spark入门实战系列--5.Hive(下)--Hive实战
- Atitit 关于处理环保行动联盟和动物解放阵线游击队的任命书 委任状
- Android 一些比较厉害的大牛博客
- web在线聊天系统。非ajax轮询
- python程序开子进程打包成exe文件运行炸内存原因剖析
- 论文阅读(3)--SPDA-CNN: Unifying Semantic Part Detection and Abstraction for Fine-grained Recognition
- linux 到文件的最后一行,linux – 将第一行复制到文件中的最后一行
- 用了都说好的SCI在线绘图工具来了~~~~~~~
- x=5y=8c语言表达式,中国大学MOOC: 假设变量x的位数为n(n=8),x的最高有效字节不变,其余各位全变为0,则对应C语言表达式为( )。 答案:(x(n-8))(n-8)...
- 不懂就问,Spring 是如何判定原型循环依赖和构造方法循环依赖的?
- 【漏洞分析】dedecms有前提前台任意用户密码修改
- Perl复制、移动、重命名文件/目录
- 壁面函数matlab,Y+的查看及FLUENT壁面函数的选择
- Go 相关的框架,库和软件的精选清单
- 1206、0805、0603、0402、0201、01005、008004,你手工焊接过的最小的封装是哪个
- 第七章——ICell的常用属性与方法
- 微信第三方平台服务器,微信三方平台接入
- github仓库在线新建文件夹方法备份