赞
踩
PyQt5的笔记的其他文章链接:
(1条消息) PyQt5的笔记(上)_我行我素,向往自由的博客-CSDN博客
PyQt5的笔记(中-1)_我行我素,向往自由的博客-CSDN博客
(1条消息) PyQt5的笔记(中-2)_我行我素,向往自由的博客-CSDN博客
(1条消息) PyQt5的笔记(中-3)_我行我素,向往自由的博客-CSDN博客
目录
没有提供用户交互功能。
- 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_())
运行效果:
- #信号
- label.linkHovered.connect(lambda a:print(a))#鼠标放上去,触发,然后打印网址
- label.linkActivated.connect(lambda a:print(a))#点击打印
运行效果:
- # 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)#生成填充前景色的平坦段
效果展示:
- 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))
- 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_())
- 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_())
效果展示:
- 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)#问号图标
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。