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 功能特性

 

 

 

from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('QLabel功能测试')
        self.resize(1000,700)
        self.setup_ui()

    def setup_ui(self):
        label=QLabel('账号(&s)',self)#准备设置快捷键,这里只有设置了小伙伴,才会生效
        label=QLabel('<a href="http://www.baidu.com">百度</a>',self)
        label.move(50,100)
        label.resize(400,400)#如果长度小于文本长度,超过的部分会显示不出来
        # label.adjustSize()  # 根据文本内容调整大小
        label.setStyleSheet('background-color:cyan')

        #对齐(默认:水平方向上左对齐,竖直方向上居中对齐)
        label.setAlignment(Qt.AlignRight | Qt.AlignVCenter)#水平右对齐,竖直居中对齐

        #缩进与边距
        label.setIndent(20)#缩进
        label.setMargin(20)#边距

        #展示格式
        # label.setTextFormat(Qt.PlainText)#以普通文本方式展示

        #小伙伴
        le1=QLineEdit(self)
        le1.move(250,250)
        le2=QLineEdit(self)
        le2.move(250,300)
        # label.setBuddy(le1)#label设置了一个小伙伴le1

        # #内容缩放
        # label.setPixmap(QPixmap('图片/吐槽1.png'))
        label.setScaledContents(True)

        #文本交互标志
        # label.setTextInteractionFlags(Qt.TextSelectableByMouse | Qt.TextSelectableByKeyboard | Qt.TextEditable)#通过鼠标和键盘选中,可编辑
        # label.setSelection(1,2)#从1开始的,选两个长度(begin,num)

        #外部链接
        label.setOpenExternalLinks(True)#打开外部链接

        #换行
        label.setWordWrap(True)#内容超出宽度,自动换行,并且保证单词的完整性

        #内容操作
        # label.setText('<img src="图片/吐槽1.png" width=60 height=60>')#当成富文本处理
        # label.setNum(888.88)

        #展示画图
        # pic=QPicture()
        # painter=QPainter(pic)
        # painter.setBrush(QBrush(QColor(100,200,100)))#画刷对象
        # painter.drawEllipse(0,0,200,200)#椭圆
        # label.setPicture(pic)

        #展示动图.gif
        movie=QMovie("图片/爱你1.gif")
        label.setMovie(movie)
        movie.start()
        movie.setSpeed(200)#100表示原来的速度,200表示两倍速

        #清空
        # label.clear()#所有都清空


if __name__=='__main__':
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

运行效果:

31.2 信号

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

运行效果:

32.QLCDNumber

32.1 功能作用

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

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

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

lcd=QLCDNumber(2,self)#数字表示展示内容的位数
lcd.move(0,0)
lcd.resize(300,100)

lcd2=QLCDNumber(self)
lcd2.move(0,100)
lcd2.resize(300,100)

lcd3 = QLCDNumber(self)
lcd3.move(0, 200)
lcd3.resize(300, 100)

lcd.display(99)
lcd2.display(99)
lcd3.display(99)

lcd.setSegmentStyle(QLCDNumber.Outline)#生成填充了背景颜色的凸起部分
lcd2.setSegmentStyle(QLCDNumber.Filled)#生成填充颜色的凹起部分
lcd3.setSegmentStyle(QLCDNumber.Flat)#生成填充前景色的平坦段

效果展示:

33.QProgressBar进度条

 

from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('QProgressBar测试')
        self.resize(500,500)
        self.setup_ui()
        
    def setup_ui(self):
        pb=QProgressBar(self)
        print('当前最小值{},最大值{}.'.format(pb.minimum(),pb.maximum()))
        # pb.setMinimum(0)#[注意]最大值最小值均为0时,则进入繁忙提示
        # pb.setMaximum(100)
        pb.setRange(50,100)
        pb.setValue(75)
        
        btn=QPushButton(self)
        btn.setText('测试按钮')
        btn.move(200,200)
        def test():
            pb.reset()#重置之后,当前值为最小值减一,最小最大值还是之前设置的
            print('heihei当前最小值{},最大值{}.'.format(pb.minimum(), pb.maximum()))
            print('当前值:',pb.value())
        btn.clicked.connect(test)#重置

if __name__=='__main__':
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

运行结果:

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

效果展示:

#文本标签操作
pb.setTextVisible(False)#默认True,文字部分隐藏
pb.text()#打印文本标签,就是隐藏起来的内容
pb.resize(40,400)
pb.setOrientation(Qt.Vertical)#垂直方向,改动的只是进度条方向,但是尺寸依旧需要手动调整,竖直方向文字部分会隐藏

#倒立外观(反转)
pb.setInvertedAppearance(True)#从上往下

运行结果:

#定时器
timer=QTimer(pb)
def change_progress():
    if pb.value()==pb.maximum():
        timer.stop()
    pb.setValue(pb.value()+1)

timer.timeout.connect(change_progress)
timer.start(2000)#2秒
pb.valueChanged.connect(lambda val:print('当前的进度值:',val))

34.QDialog

34.1 QRrrorMessage 

from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('QErrorMessage')
        self.resize(500,500)
        self.setup_ui()
        
    def setup_ui(self):
        # em=QErrorMessage(self)
        # em.setWindowTitle('错误提示')
        # em.showMessage('1.真不巧,又出错了')#这里的富选框,不再显示相同的信息
        # em.showMessage('2.真不巧,又出错了')
        # em.showMessage('3.真不巧,又出错了')
        # em.showMessage('4.真不巧,又出错了')
        # em.open()
        # em.exec()#应用程序方式
        QErrorMessage.qtHandler()
        qDebug('qDebug')#展示调试信息
        qWarning('qWarning')#展示警告信息

if __name__=='__main__':
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

34.2 QProgressDialog

from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('QProgressDialog')
        self.resize(500,500)
        self.setup_ui()

    def setup_ui(self):
        # pd=QProgressDialog(self)#对话框会自动弹出来,但有一定的间隔;如果4秒还没跑完,才会显示出来
        pd=QProgressDialog('xx1','xx2',1,1000,self)
        pd.setWindowTitle('窗口标题')
        # pd.setMinimumDuration(0)#设置等待时间,0表示不显示
        pd.setAutoClose(False)#满了之后不自动关闭
        pd.setAutoReset(False)#取消自动重置
        pd.open(lambda :print('对话框被取消'))
        for i in range(1,101):
            pd.setValue(i)#满值时,会自动重置
        # pd.show()

if __name__=='__main__':
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

运行效果:

 

from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('QProgressDialog')
        self.resize(500,500)
        self.setup_ui()

    def setup_ui(self):
        pd=QProgressDialog(self)#对话框会自动弹出来,但有一定的间隔;如果4秒还没跑完,才会显示出来
        pd.setWindowTitle('窗口标题')
        pd.setLabelText('下载进度')
        pd.setCancelButtonText('取消下载')
        pd.setRange(0,100)
        pd.setAutoClose(False)#满了之后不自动关闭
        pd.setAutoReset(False)#取消自动重置
        pd.open(lambda :print('对话框被取消'))
        timer=QTimer(pd)
        pd.setAutoReset(False)
        def test():
            if pd.value()>=pd.maximum() or pd.wasCanceled():
                timer.stop()
            else:
                pd.setValue(pd.value() + 1)
        timer.timeout.connect(test)

        timer.start(1000)#1s

        #信号
        pd.canceled.connect(timer.stop)

if __name__=='__main__':
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

效果展示:

 

34.3 QMessageBox

from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('QMessageBox')
        self.resize(500,500)
        self.setup_ui()
        
    def setup_ui(self):
        mb=QMessageBox(self)#是一个模态对话框

        # mb=QMessageBox(QMessageBox.Warning,'xx1','<h2>xx2</h2>',QMessageBox.Ok | QMessageBox.Discard,self)
        # mb.setModal(False)#强行改为非模态对话框
        # mb.setWindowModality(Qt.NonModal)#非模态

        mb.setWindowTitle('消息提示')#设置窗口标题
        mb.setIcon(QMessageBox.Information)#设置标准图标
        mb.setIconPixmap(QPixmap('图片/提示.png').scaled(50,50))#自定义图标
        mb.setTextFormat(Qt.PlainText)#设置为普通文本
        mb.setText('<h3>文件内容已经被修改</h3>')#主标题,可以设置富文本
        mb.setInformativeText('<h4>是否直接关闭不保存?</h4>')#设置副标题
        mb.setCheckBox(QCheckBox('下次不再提醒',mb))
        mb.setDetailedText('<h4>你修改的内容是给每一行代码加了一个分号</h4>')#不支持富文本
        mb.exec()#应用程序级别的模态对话框
        #mb.open()#窗口级别的模态对话框

if __name__=='__main__':
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

运行效果:

 

#添加按钮
mb.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
mb.addButton(QPushButton('xx1',mb),QMessageBox.YesRole)
# mb.addButton(QPushButton('xx2', mb), QMessageBox.NoRole)
btn2=mb.addButton('xx2',QMessageBox.NoRole)#同上,但是返回结果是一个按钮QPushButton

# #移除按钮
# mb.removeButton(btn2)

# #设置默认按钮:敲回车,默认点击的按钮
# mb.setDefaultButton(btn2)

#点击esc会触发哪个按钮
mb.setEscapeButton(btn2)
print(btn2)
def test(btn):
    print(btn)
    if btn==btn2:
        print('点击了第二个按钮')
    else:
        print('点击了其他按钮')
mb.buttonClicked.connect(test)#信号,点击按钮会触发


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

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

 

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

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值