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.pswp.cn/news/534509.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534509.shtml
英文地址,請注明出處:http://en.pswp.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…