• PyQt5的笔记(中-4)


    PyQt5的笔记的其他文章链接:

    (1条消息) PyQt5的笔记(上)_我行我素,向往自由的博客-CSDN博客

    PyQt5的笔记(中-1)_我行我素,向往自由的博客-CSDN博客

    (1条消息) PyQt5的笔记(中-2)_我行我素,向往自由的博客-CSDN博客

    (1条消息) PyQt5的笔记(中-3)_我行我素,向往自由的博客-CSDN博客

     

    目录

    31. QLabel

    31.1 功能特性

    31.2 信号

    32.QLCDNumber

    32.1 功能作用

    33.QProgressBar进度条

    34.QDialog

    34.1 QRrrorMessage 

    34.2 QProgressDialog

    34.3 QMessageBox


    31. QLabel

    没有提供用户交互功能。 

    31.1 功能特性

     

     

     

    1. from PyQt5.Qt import *
    2. import sys
    3. class Window(QWidget):
    4. def __init__(self):
    5. super().__init__()
    6. self.setWindowTitle('QLabel功能测试')
    7. self.resize(1000,700)
    8. self.setup_ui()
    9. def setup_ui(self):
    10. label=QLabel('账号(&s)',self)#准备设置快捷键,这里只有设置了小伙伴,才会生效
    11. label=QLabel('百度',self)
    12. label.move(50,100)
    13. label.resize(400,400)#如果长度小于文本长度,超过的部分会显示不出来
    14. # label.adjustSize() # 根据文本内容调整大小
    15. label.setStyleSheet('background-color:cyan')
    16. #对齐(默认:水平方向上左对齐,竖直方向上居中对齐)
    17. label.setAlignment(Qt.AlignRight | Qt.AlignVCenter)#水平右对齐,竖直居中对齐
    18. #缩进与边距
    19. label.setIndent(20)#缩进
    20. label.setMargin(20)#边距
    21. #展示格式
    22. # label.setTextFormat(Qt.PlainText)#以普通文本方式展示
    23. #小伙伴
    24. le1=QLineEdit(self)
    25. le1.move(250,250)
    26. le2=QLineEdit(self)
    27. le2.move(250,300)
    28. # label.setBuddy(le1)#label设置了一个小伙伴le1
    29. # #内容缩放
    30. # label.setPixmap(QPixmap('图片/吐槽1.png'))
    31. label.setScaledContents(True)
    32. #文本交互标志
    33. # label.setTextInteractionFlags(Qt.TextSelectableByMouse | Qt.TextSelectableByKeyboard | Qt.TextEditable)#通过鼠标和键盘选中,可编辑
    34. # label.setSelection(1,2)#从1开始的,选两个长度(begin,num)
    35. #外部链接
    36. label.setOpenExternalLinks(True)#打开外部链接
    37. #换行
    38. label.setWordWrap(True)#内容超出宽度,自动换行,并且保证单词的完整性
    39. #内容操作
    40. # label.setText('')#当成富文本处理
    41. # label.setNum(888.88)
    42. #展示画图
    43. # pic=QPicture()
    44. # painter=QPainter(pic)
    45. # painter.setBrush(QBrush(QColor(100,200,100)))#画刷对象
    46. # painter.drawEllipse(0,0,200,200)#椭圆
    47. # label.setPicture(pic)
    48. #展示动图.gif
    49. movie=QMovie("图片/爱你1.gif")
    50. label.setMovie(movie)
    51. movie.start()
    52. movie.setSpeed(200)#100表示原来的速度,200表示两倍速
    53. #清空
    54. # label.clear()#所有都清空
    55. if __name__=='__main__':
    56. app = QApplication(sys.argv)
    57. window = Window()
    58. window.show()
    59. sys.exit(app.exec_())

    运行效果:

    31.2 信号

    1. #信号
    2. label.linkHovered.connect(lambda a:print(a))#鼠标放上去,触发,然后打印网址
    3. label.linkActivated.connect(lambda a:print(a))#点击打印

    运行效果:

    32.QLCDNumber

    32.1 功能作用

    1. # lcd = QLCDNumber(self)
    2. lcd=QLCDNumber(5,self)#数字表示展示内容的位数
    3. lcd.move(100,100)
    4. lcd.resize(300,50)
    5. # lcd.display('12345')#多余的位数,新的替代旧的,若位数是5,即123456-->23456
    6. # lcd.display('osgabcdefhlpruy')
    7. # lcd.display(':')
    8. # lcd.display(88866)#展示数字,也可以;如果超出位数,会变成0
    9. lcd.display(888.68)#显示5位的情况下,结果是888.7
    10. btn=QPushButton(self)
    11. btn.setText('测试按钮')
    12. btn.move(50,50)
    13. btn.clicked.connect(lambda:print(lcd.value()))#拿到的是全部的内容,并非四舍五入的结果

    1. #模式设置
    2. lcd.setMode(QLCDNumber.Bin)#二进制
    3. #lcd.setBinMode()#快捷方式

    1. #溢出
    2. print(lcd.checkOverflow(100))#位数为2,所以为True
    3. lcd.overflow.connect(lambda:print('数值溢出'))
    4. lcd.display(100)#必须先监听再展示

    1. lcd=QLCDNumber(2,self)#数字表示展示内容的位数
    2. lcd.move(0,0)
    3. lcd.resize(300,100)
    4. lcd2=QLCDNumber(self)
    5. lcd2.move(0,100)
    6. lcd2.resize(300,100)
    7. lcd3 = QLCDNumber(self)
    8. lcd3.move(0, 200)
    9. lcd3.resize(300, 100)
    10. lcd.display(99)
    11. lcd2.display(99)
    12. lcd3.display(99)
    13. lcd.setSegmentStyle(QLCDNumber.Outline)#生成填充了背景颜色的凸起部分
    14. lcd2.setSegmentStyle(QLCDNumber.Filled)#生成填充颜色的凹起部分
    15. lcd3.setSegmentStyle(QLCDNumber.Flat)#生成填充前景色的平坦段

    效果展示:

    33.QProgressBar进度条

     

    1. from PyQt5.Qt import *
    2. import sys
    3. class Window(QWidget):
    4. def __init__(self):
    5. super().__init__()
    6. self.setWindowTitle('QProgressBar测试')
    7. self.resize(500,500)
    8. self.setup_ui()
    9. def setup_ui(self):
    10. pb=QProgressBar(self)
    11. print('当前最小值{},最大值{}.'.format(pb.minimum(),pb.maximum()))
    12. # pb.setMinimum(0)#[注意]最大值最小值均为0时,则进入繁忙提示
    13. # pb.setMaximum(100)
    14. pb.setRange(50,100)
    15. pb.setValue(75)
    16. btn=QPushButton(self)
    17. btn.setText('测试按钮')
    18. btn.move(200,200)
    19. def test():
    20. pb.reset()#重置之后,当前值为最小值减一,最小最大值还是之前设置的
    21. print('heihei当前最小值{},最大值{}.'.format(pb.minimum(), pb.maximum()))
    22. print('当前值:',pb.value())
    23. btn.clicked.connect(test)#重置
    24. if __name__=='__main__':
    25. app = QApplication(sys.argv)
    26. window = Window()
    27. window.show()
    28. sys.exit(app.exec_())

    运行结果:

    1. pb=QProgressBar(self)
    2. pb.resize(400,40)
    3. pb.setRange(50,100)
    4. pb.setValue(75)
    5. #文本格式设置 默认:百分比
    6. # pb.setFormat("当前人数 / 总人数 %p%")#%p:表示百分数
    7. # pb.setFormat("当前人数%v / 总人数%m")
    8. pb.setFormat("当前人数{} / 总人数%m".format(pb.value()-pb.minimum()))

    效果展示:

    1. #文本标签操作
    2. pb.setTextVisible(False)#默认True,文字部分隐藏
    3. pb.text()#打印文本标签,就是隐藏起来的内容
    4. pb.resize(40,400)
    5. pb.setOrientation(Qt.Vertical)#垂直方向,改动的只是进度条方向,但是尺寸依旧需要手动调整,竖直方向文字部分会隐藏
    6. #倒立外观(反转)
    7. pb.setInvertedAppearance(True)#从上往下

    运行结果:

    1. #定时器
    2. timer=QTimer(pb)
    3. def change_progress():
    4. if pb.value()==pb.maximum():
    5. timer.stop()
    6. pb.setValue(pb.value()+1)
    7. timer.timeout.connect(change_progress)
    8. timer.start(2000)#2秒
    9. pb.valueChanged.connect(lambda val:print('当前的进度值:',val))

    34.QDialog

    34.1 QRrrorMessage 

    1. from PyQt5.Qt import *
    2. import sys
    3. class Window(QWidget):
    4. def __init__(self):
    5. super().__init__()
    6. self.setWindowTitle('QErrorMessage')
    7. self.resize(500,500)
    8. self.setup_ui()
    9. def setup_ui(self):
    10. # em=QErrorMessage(self)
    11. # em.setWindowTitle('错误提示')
    12. # em.showMessage('1.真不巧,又出错了')#这里的富选框,不再显示相同的信息
    13. # em.showMessage('2.真不巧,又出错了')
    14. # em.showMessage('3.真不巧,又出错了')
    15. # em.showMessage('4.真不巧,又出错了')
    16. # em.open()
    17. # em.exec()#应用程序方式
    18. QErrorMessage.qtHandler()
    19. qDebug('qDebug')#展示调试信息
    20. qWarning('qWarning')#展示警告信息
    21. if __name__=='__main__':
    22. app = QApplication(sys.argv)
    23. window = Window()
    24. window.show()
    25. sys.exit(app.exec_())

    34.2 QProgressDialog

    1. from PyQt5.Qt import *
    2. import sys
    3. class Window(QWidget):
    4. def __init__(self):
    5. super().__init__()
    6. self.setWindowTitle('QProgressDialog')
    7. self.resize(500,500)
    8. self.setup_ui()
    9. def setup_ui(self):
    10. # pd=QProgressDialog(self)#对话框会自动弹出来,但有一定的间隔;如果4秒还没跑完,才会显示出来
    11. pd=QProgressDialog('xx1','xx2',1,1000,self)
    12. pd.setWindowTitle('窗口标题')
    13. # pd.setMinimumDuration(0)#设置等待时间,0表示不显示
    14. pd.setAutoClose(False)#满了之后不自动关闭
    15. pd.setAutoReset(False)#取消自动重置
    16. pd.open(lambda :print('对话框被取消'))
    17. for i in range(1,101):
    18. pd.setValue(i)#满值时,会自动重置
    19. # pd.show()
    20. if __name__=='__main__':
    21. app = QApplication(sys.argv)
    22. window = Window()
    23. window.show()
    24. sys.exit(app.exec_())

    运行效果:

     

    1. from PyQt5.Qt import *
    2. import sys
    3. class Window(QWidget):
    4. def __init__(self):
    5. super().__init__()
    6. self.setWindowTitle('QProgressDialog')
    7. self.resize(500,500)
    8. self.setup_ui()
    9. def setup_ui(self):
    10. pd=QProgressDialog(self)#对话框会自动弹出来,但有一定的间隔;如果4秒还没跑完,才会显示出来
    11. pd.setWindowTitle('窗口标题')
    12. pd.setLabelText('下载进度')
    13. pd.setCancelButtonText('取消下载')
    14. pd.setRange(0,100)
    15. pd.setAutoClose(False)#满了之后不自动关闭
    16. pd.setAutoReset(False)#取消自动重置
    17. pd.open(lambda :print('对话框被取消'))
    18. timer=QTimer(pd)
    19. pd.setAutoReset(False)
    20. def test():
    21. if pd.value()>=pd.maximum() or pd.wasCanceled():
    22. timer.stop()
    23. else:
    24. pd.setValue(pd.value() + 1)
    25. timer.timeout.connect(test)
    26. timer.start(1000)#1s
    27. #信号
    28. pd.canceled.connect(timer.stop)
    29. if __name__=='__main__':
    30. app = QApplication(sys.argv)
    31. window = Window()
    32. window.show()
    33. sys.exit(app.exec_())

    效果展示:

     

    34.3 QMessageBox

    1. from PyQt5.Qt import *
    2. import sys
    3. class Window(QWidget):
    4. def __init__(self):
    5. super().__init__()
    6. self.setWindowTitle('QMessageBox')
    7. self.resize(500,500)
    8. self.setup_ui()
    9. def setup_ui(self):
    10. mb=QMessageBox(self)#是一个模态对话框
    11. # mb=QMessageBox(QMessageBox.Warning,'xx1','<h2>xx2h2>',QMessageBox.Ok | QMessageBox.Discard,self)
    12. # mb.setModal(False)#强行改为非模态对话框
    13. # mb.setWindowModality(Qt.NonModal)#非模态
    14. mb.setWindowTitle('消息提示')#设置窗口标题
    15. mb.setIcon(QMessageBox.Information)#设置标准图标
    16. mb.setIconPixmap(QPixmap('图片/提示.png').scaled(50,50))#自定义图标
    17. mb.setTextFormat(Qt.PlainText)#设置为普通文本
    18. mb.setText('<h3>文件内容已经被修改h3>')#主标题,可以设置富文本
    19. mb.setInformativeText('<h4>是否直接关闭不保存?h4>')#设置副标题
    20. mb.setCheckBox(QCheckBox('下次不再提醒',mb))
    21. mb.setDetailedText('<h4>你修改的内容是给每一行代码加了一个分号h4>')#不支持富文本
    22. mb.exec()#应用程序级别的模态对话框
    23. #mb.open()#窗口级别的模态对话框
    24. if __name__=='__main__':
    25. app = QApplication(sys.argv)
    26. window = Window()
    27. window.show()
    28. sys.exit(app.exec_())

    运行效果:

     

    1. #添加按钮
    2. mb.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
    3. mb.addButton(QPushButton('xx1',mb),QMessageBox.YesRole)
    4. # mb.addButton(QPushButton('xx2', mb), QMessageBox.NoRole)
    5. btn2=mb.addButton('xx2',QMessageBox.NoRole)#同上,但是返回结果是一个按钮QPushButton
    6. # #移除按钮
    7. # mb.removeButton(btn2)
    8. # #设置默认按钮:敲回车,默认点击的按钮
    9. # mb.setDefaultButton(btn2)
    10. #点击esc会触发哪个按钮
    11. mb.setEscapeButton(btn2)
    12. print(btn2)
    13. def test(btn):
    14. print(btn)
    15. if btn==btn2:
    16. print('点击了第二个按钮')
    17. else:
    18. print('点击了其他按钮')
    19. mb.buttonClicked.connect(test)#信号,点击按钮会触发


    QMessageBox.about(self,'xx1','xx2')
     

     QMessageBox.aboutQt(self,'xx3')#封装的一个Qt的对话框

     

    QMessageBox.question(self,'xx1','xx2',QMessageBox.Ok | QMessageBox.Discard)#问号图标

     

     

  • 相关阅读:
    【Redis】深入探索 Redis 的数据类型 —— 列表 List
    从零搭建微服务架构:Spring Boot与Nacos完美整合
    VS Code打造Rust的开发环境
    uni-app开发微信小程序时u-view自定义样式不生效
    稳定性总结
    涂鸦智能携手亚马逊云科技 共建“联合安全实验室” 为IoT发展护航
    【算法 - 动态规划】找零钱问题Ⅰ
    10行代码集2000张美女图,Python爬虫120例,再上征途
    LLM 09-新的模型架构
    numpy数组(无冒号,单冒号,双冒号)的含义
  • 原文地址:https://blog.csdn.net/m0_58086930/article/details/125878386