PyQT5 QtableView翻頁功能實現

2021-10-14 04:16:32 字數 3056 閱讀 3821

#顯示資料方法

def show_list(self, device_list_all):

# 分頁處理

device_number = len(device_list_all)# 顯示資料的條數

page_number = 10#每頁顯示幾條資料

# 初始化分頁按鈕

if device_number == 0:#資料條數為0的處理邏輯,按鈕置灰

self.btn_first_page.setenabled(false)

self.btn_last_page.setenabled(false)

self.btn_pre_page.setenabled(false)

self.btn_next_page.setenabled(false)

elif device_number // page_number == 0:#只有一頁時的處理邏輯

self.btn_first_page.setenabled(false)

self.btn_last_page.setenabled(false)

self.btn_pre_page.setenabled(false)

self.btn_next_page.setenabled(false)

device_list = device_list_all#顯示全部內容

else:#有多頁的處理邏輯

if self.current_page == 1:#當前頁是首頁處理邏輯

self.btn_first_page.setenabled(false)

self.btn_last_page.setenabled(true)

self.btn_pre_page.setenabled(false)

self.btn_next_page.setenabled(true)

device_list = device_list_all[:device_number ]

elif (self.current_page == 0) or (self.current_page == device_number // page_number + 1):#當前頁是尾頁處理邏輯

self.current_page = device_number // page_number + 1

self.btn_first_page.setenabled(true)

self.btn_last_page.setenabled(false)

self.btn_pre_page.setenabled(true)

self.btn_next_page.setenabled(false)

device_list = device_list_all[(device_number // page_number ) * device_number :]

else:#當前頁是中間頁處理邏輯

self.btn_first_page.setenabled(true)

self.btn_last_page.setenabled(true)

self.btn_pre_page.setenabled(true)

self.btn_next_page.setenabled(true)

device_list = device_list_all[(self.current_page - 1) * page_number ?(self.current_page - 1) * page_number + page_number )]

# 重新整理顯示**內容

self.model.clear()

self.model.sethorizontalheaderlabels(['sequence', 'id', 'code', 'descript', 'status', 'notice'])

for ln in range((self.current_page - 1) * page_number , (self.current_page - 1) * page_number + len(device_list)):

item_0 = qstandarditem(str(ln + 1))

item_0.settextalignment(qt.aligncenter)

self.model.setitem(ln % page_number , 0, item_0)

for row, linedata in enumerate(device_list):

for col, itemdata in enumerate(linedata):

item = qstandarditem(str(itemdata)) if itemdata is not none else qstandarditem('')

item.settextalignment(qt.aligncenter)

self.model.setitem(row, col + 1, item)

self.tab_device.horizontalheader().setsectionresizemode(0, qheaderview.interactive)

self.tab_device.setcolumnwidth(0, 50)

#按鈕槽方法

@pyqtslot()

def on_btn_first_page(self):

self.current_page = 1

self.show_list(self.list_device)

def on_btn_last_page(self):

self.current_page = 0

self.show_list(self.list_device)

def on_btn_pre_page(self):

self.current_page -= 1

self.show_list(self.list_device)

def on_btn_next_page(self):

self.current_page += 1

self.show_list(self.list_device)

pyqt5自動更新QTableview內容解決方案

下面給你例項 from pyqt5.qt import import time class threadtable qthread update date pyqtsignal 自定義乙個訊號 def init self,parent none args,kwargs super threadtab...

在PyQt中對QTableView新增右鍵選單

上面的軟體,最左側是qlist,中間是qlabelview,準備給中間的 加個右鍵選單,主要 如下 self.view setcontextmenupolicy qt.customcontextmenu 右鍵選單,如果不設為customcontextmenu,無法使用customcontextmen...

pyqt5切換python版本 pyqt5介面切換

主要的思路就是建立兩個frame 如果有兩個以上同理 使用setvisible 函式顯示或者隱藏frame 引數是bool值 import sys from pyqt5.qtwidgets import from pyqt5.qtcore import from pyqt5.qtgui import...