pyqt5 下拉 多页 点击_PyQt5实战——自定义翻页控件实现

分页控件效果图

一、环境要求

python解释器:python3.7.4

依赖:PyQt5、sys模块

二、思路分析

1、布局:”上一页“、”下一页“等button、edit及label控件采用水平布局,使用该布局填充主控件QWidget

2、类继承关系:主界面继承自QWidget,然后把button、edit、label等控件作为成员变量,实现自定义的Widget

3、类接口分析:自定义的控件提供属性接口,方便多种类对象之间的交互

三、代码实现步骤

1、定义一个新的控件,继承自QWidget

2、新控件界面的实现:使用QHBoxLayout容器,依次添加效果图所示的控件(也就是QPushButton、QLabel、QLineEdit等),并设置这些控件的文本属性

3、校验:为当前页数,总过页数及跳转页数添加校验(永远不要相信用户的输入),当前页数至少为1,且不能大于总的页数,跳转的页数只能在1到总的页数之间,且输入框只能输入整数

4、添加事件响应

四、代码展示

from PyQt5.QtWidgets import (QWidget,QHBoxLayout,QPushButton,QLabel,QLineEdit,QApplication)

from PyQt5.Qt import QIntValidator

import sys

'''

1、提供数据翻页显示接口

'''

class PageController(QWidget):

def __init__(self):

super().__init__()

self._init_ui()

def _init_ui(self):

control_layout = QHBoxLayout()

self.prePage = QPushButton("

self.curPage = QLabel("1")

self.nextPage = QPushButton("下一页>")

self.totalPage = QLabel("共 " + str(10) + " 页")

skipLable_0 = QLabel("跳到")

self.skipPage = QLineEdit()

self.skipPage.setPlaceholderText("请输入跳转的页码")

self.skipPage.setValidator(QIntValidator())  # 设置只能输入int类型的数据

skipLabel_1 = QLabel("页")

self.confirmSkip = QPushButton("确定")

control_layout.addStretch(1)

control_layout.addWidget(self.prePage)

control_layout.addWidget(self.curPage)

control_layout.addWidget(self.nextPage)

control_layout.addWidget(self.totalPage)

control_layout.addWidget(skipLable_0)

control_layout.addWidget(self.skipPage)

control_layout.addWidget(skipLabel_1)

control_layout.addWidget(self.confirmSkip)

control_layout.addStretch(1)

self.setLayout(control_layout)

self.setWindowTitle("分页控件demo")

self.prePage.clicked.connect(self.button_clicked)

self.nextPage.clicked.connect(self.button_clicked)

self.confirmSkip.clicked.connect(self.button_clicked)

def button_clicked(self):

button_text=self.sender().text()

total_page=int(self.totalPage.text().split()[1])

current_page=int(self.curPage.text())

if "

self.skipPage.setText('')

current_page=current_page-1

if current_page<=1:

self.curPage.setText('1')

else:

self.curPage.setText(str(current_page))

if "下一页>"==button_text:

self.skipPage.setText('')

current_page=current_page+1

if current_page<=total_page:

self.curPage.setText(str(current_page))

if "确定"==button_text:

if ''==self.skipPage.text():

return

page=int(self.skipPage.text())

if 1<=page<=total_page:

self.curPage.setText(str(page))

if page>total_page:

self.curPage.setText(str(total_page))

self.skipPage.setText(str(total_page))

if page<=0:

self.curPage.setText(str(1))

self.skipPage.setText(str(1))

@property

def PAGE(self):

return int(self.totalPage.text().split()[1])

@PAGE.setter

def PAGE(self,page:int):

if page<0:

return

self.totalPage.setText("共 " + str(page) + " 页")

if __name__=='__main__':

app=QApplication(sys.argv)

win=PageController()

win.show()

sys.exit(app.exec_())

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

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

相关文章

三种平摊分析的方法分别为_干货|电工必须学会的三极管电路分析方法

三极管有静态和动态两种工作状态。未加信号时三极管的直流工作状态称为静态&#xff0c;此时各极电流称为静态电流&#xff0c;给三极管加入交流信号之后的工作电流称为动态工作电流&#xff0c;这时三极管是交流工作状态&#xff0c;即动态。一个完整的三极管电路分析有四步&a…

休眠后gpio状态_浅谈Digi XBee模块的休眠模式

浅谈Digi XBee模块的休眠模式2020-3-25Digi XBee S2C模块&#xff0c;如果仅连接电源线可以测得&#xff0c;在待机情况下&#xff0c;大约是10.5mA左右的电流&#xff0c;在休眠时的功耗可以低到0.5uA。可以知道&#xff0c;休眠几乎不耗电。在Spec上标的待机功耗会比实测只接…

xodo上的笔记不见了_一起来“终极笔记名场面批发市场”进货吗

俗话说得好&#xff0c;谁都逃不过“真香定律”&#xff0c;三天不见小笔记&#xff0c;想他。不对&#xff0c;不应该叫小笔记&#xff0c;应该叫粉丝起的名字——“【瓶邪黑花】《终极笔记》(原著风/连载)”下面请接受来自粉丝的疯狂打call~自上周《终极笔记》播出&#xff0…

python3学习笔记 雨痕_Python 3 学习笔记:数字和布尔

数字基本类型整数在 Python 编程中&#xff0c;整数就是数学意义上的整数&#xff0c;包括正整数、负整数和零&#xff0c;且它的位数是任意的。根据表示方法的不同&#xff0c;可以分为&#xff1a;二进制整数八进制整数十进制整数十六进制整数浮点数浮点数&#xff0c;即数学…

不越狱换壁纸_那些不舍得换的手机插画壁纸,你还差几张?

酷爱收藏美作的微课菌可以大展拳脚了&#xff01;分享3位自己收藏的画师作品&#xff0c;绝对每一张都让你舍不得换&#xff0c;手机可以扔&#xff0c;壁纸得先拷贝存起来&#xff01;开始吧&#xff01;&#xff01;多图预警&#xff01;NO.1&#xff1a;Atey Ghailan&#x…

程序员绩效总结_年终总结怎么写?

每年这时候&#xff0c;都有必要写一下一年的个人工作总结。年终总结或工作总结是个挺重要的事。写好的话&#xff0c;有助于说明自己的工作绩效&#xff0c;绩效好可以多拿年终奖&#xff0c;还有机会争取晋升。另外&#xff0c;一年下来的个人生活也需要总结&#xff0c;这一…

线程停止继续_线程不是你想中断就能中断

这是我2021年的第2篇原创文章&#xff0c;原汁原味的技术之路尽在Jerrycodes为什么不强制停止如何用 interrupt 停止线程sleep 期间能否感受到中断停止线程的方式有几种总结启动线程需要调用 Thread 类的 start() 方法&#xff0c;并在 run() 方法中定义需要执行的任务。启动一…

倒序查10条数据_10 | 怎么给字符串字段加索引?

现在&#xff0c;几乎所有的系统都支持邮箱登录&#xff0c;如何在邮箱这样的字段上建立合理的索引&#xff0c;是我们今天要讨论的问题。假设&#xff0c;你现在维护一个支持邮箱登录的系统&#xff0c;用户表是这么定义的&#xff1a;mysql> create table SUser( ID bigin…

保留小数点后三位_【Meta分析】Stata制作森林图时,如何保留三位小数?

系统评价/Meta分析指全面收集所有相关研究并逐个进行严格评价和分析&#xff0c;再用定性或定量合成的方法对资料进行处理得出综合结论的研究方法。在指导学员的过程中发现初学者在学习过程中常常会碰到许多共性问题&#xff0c;本公众号特此开设专栏解答&#xff0c;希望能够和…

android自动计步_Android计步模块实例代码(类似微信运动)

最近在项目中研究计步模块&#xff0c;每天0点开始记录当天的步数&#xff0c;类似微信运动。碰到了不少坑今天有时间整理出来给大家看看。做之前在google、baidu、github上搜了个遍没找到好的&#xff0c;大多数都是需要在后台存活&#xff0c;需要后台Service。对于现在的各大…

python井字棋ai_实现AI下井字棋的alpha-beta剪枝算法(python实现)

代码参考自中国大学mooc上人工智能与信息社会陈斌老师的算法&#xff0c;我在原来的基础上增加了玩家输入的异常捕获 AlphaBeta剪枝算法是对Minimax方法的优化&#xff0c;能够极大提高搜索树的效率&#xff0c;如果对这个算法感兴趣的可以去参考相关资料。 当正确理解AlphaBet…

Redis小计(2)

目录 1.exists命令 2.del命令 3.expire/pexpire命令 4.ttl命令 5.redis对于key过期的删除策略 1.exists命令 exists X1 X2 X3 X4&#xff1a;返回四个key存在的个数。 2.del命令 del X1 X2&#xff1a;删除key。 3.expire/pexpire命令 给key设置超时时间。 expire key…

unity 彩带粒子_iOS动画开发----粒子系统---彩带效果

参考博文地址:http://my.oschina.net/u/2340880/blog/485095?fromerrbgjLq4Mw一、粒子发射器iOS中的粒子效果有两部分组成&#xff0c;一部分为发射器&#xff0c;设置例子发射的宏观属性&#xff0c;另一部分是粒子单元&#xff0c;用于设置相应的粒子属性。粒子发射器是基于…

一秒执行一次_《一秒钟》:一贯的粗旷式抓大放小,张艺谋的自命题作业总是要观众自己再做一遍...

还有不变的永远在奔跑的大棉裤花棉袄的圆脸妮子&#xff0c;这是导演张艺谋最新作品《一秒钟》的最直接观感。张艺谋是个善于从普世情怀处挖掘题材的导演。之前诸多现实题材类型作品&#xff0c;诸如讲父子和解的《千里走单骑》、夫妻爱情的《归来》以及《我的父亲母亲》&#…

latex 作者加小标_Latex 写期刊论文的小技巧

在不同文字处理系统(如 MiKTeX, TeX Live, CTeX, cwTex) 或 不同整合开发环境 ( 如Texstudio, WinEdt, TeXstudio, TeXmaker) 中&#xff0c;我用了 Miktex Texstudio 的常用组合 (win10环境中)。1: 先MiKTeX&#xff0c;后Texstudio ;2&#xff1a; 安装包(packages);3&#…

unity 畸变_unity3d 几种镜头畸变

1.Fisheye distortion 鱼眼镜头解释来自百度百科&#xff1a;鱼眼镜头是一种焦距为16mm或更短的并且视角接近或等于180。 它是一种极端的广角镜头&#xff0c;“鱼眼镜头”是它的俗称。为使镜头达到最大的摄影视角&#xff0c;这种摄影镜头的前镜片直径很短且呈抛物状向镜头前…

restfull加签_SpringBoot RestFull API签名

一、需求如下对指定的API路径进行签名认证&#xff0c;对于没有指定的无需认证&#xff0c;认证具体到方法。二、查阅资料与开发1.了解JWT&#xff0c;实际上用的开源jjwt2.编写自定义注解3.编写拦截器&#xff0c;主要是拦截特定的url进行签名验证&#xff0c;这里解析请求的h…

mysql 5.5.18下载_MySQL5.7.18下载和安装过程图文详解

MySql下载1、打开官网找到下载路口&#xff0c;这里直接给出下载的地址2、选择64位版本3、直接下载MySql5.7.18.1安装过程1 、运行安装软件&#xff0c;接受协议2、选择默认安装3、下一步到检查环境界面&#xff0c;点击“Execute”执行检查 (可以后面单独下载插件安装)&…

mysql找不到performance_Mysql安装完毕运行时没有mysql和performance_schema数据库_MySQL

Mysql问题 ERROR 1045 (28000): Access denied for user ‘root’’localhost’ (using password: YES)Mysql安装完毕运行时没有 mysql 和 performance_schema 数据库问题一&#xff1a;之前卸载未卸载干净问题二&#xff1a;没有管理员权限进入问题三&#xff1a;登录时&#…

mysql latid1_mysql触发器的实战经验

1 引言Mysql的触发器和存储过程一样&#xff0c;都是嵌入到mysql的一段程序。触发器是mysql5新增的功能&#xff0c;目前线上凤巢系统、北斗系统以及哥伦布系统使用的数据库均是mysql5.0.45版本&#xff0c;很多程序比如fc-star管理端&#xff0c;sfrd(das)&#xff0c;dorad…