python分页的实现

难点:清空Layout

#!/usr/bin/python  
#-*-coding:utf-8-*-

from PyQt4.QtCore import *
from PyQt4.QtGui import *

class PageWidget(QWidget):
    def __init__(self,parent=None):
        super(PageWidget,self).__init__(parent)
        self.btns=[]
        self.count=0
        self.presign=0           #当前点击标识
        self.nextsign=0         #当前点击标识
        self.pre_button=QPushButton()
        self.pre_button.setText("<<")
        self.pre_button.setFixedSize(25,25)
        self.connect(self.pre_button,SIGNAL("clicked()"),self,SLOT("prepage()"))
        self.next_button=QPushButton()
        self.next_button.setText(">>")
        self.connect(self.next_button,SIGNAL("clicked()"),self,SLOT("nextpage()"))
        self.next_button.setFixedSize(25,25)
        self.center_layout=QHBoxLayout()
        self.nextpage()

        self.page_layput=QHBoxLayout()
        self.page_layput.addWidget(self.pre_button)
        self.page_layput.addLayout(self.center_layout)
        self.page_layput.addWidget(self.next_button)
        self.setLayout(self.page_layput)

    @pyqtSlot()
    def prepage(self):
        self.presign=1
        self.num=0
        if (len(self.btns)>0) and (self.count>=10):
            for p in range(10):
                self.center_layout.removeWidget(self.btns[p])
                self.btns[p].deleteLater()
            self.btns=[]
        if self.count>=10:
            if self.nextsign==1:
                self.count=self.count-20
                self.nextsign=0
            else:
                self.count=self.count-10
            self.num=self.count

            for i in range(10):
                self.num+=1
                self.center_button=QPushButton()
                self.center_button.setText(str(self.num))
                self.center_button.setFixedSize(25,25)
                self.btns.append(self.center_button)
                self.center_layout.addWidget(self.center_button)
            #print self.count
    @pyqtSlot()
    def nextpage(self):
        self.nextsign=1
        if len(self.btns)>0:
            for p in range(10):
                self.center_layout.removeWidget(self.btns[p])
                self.btns[p].deleteLater()
            self.btns=[]
        if self.presign==1:
            self.count=self.count+10
            self.presign=0
        #mapper转有参数
        signal_mapper = QSignalMapper(self)
        for i in range(10):
            self.count+=1
            self.center_button=QPushButton()
            self.center_button.setText(str(self.count))
            self.center_button.setFixedSize(25,25)
            self.btns.append(self.center_button)
            self.connect(self.center_button,SIGNAL("clicked()"),signal_mapper,SLOT("map()"))
            signal_mapper.setMapping(self.center_button, str(self.count))
            self.center_layout.addWidget(self.center_button)
        self.connect(signal_mapper, SIGNAL("mapped(QString)"), self, SLOT("showpage(QString)"))
        #print self.count

    @pyqtSlot(QString)
    def showpage(self,page):
        print page

if __name__=='__main__':
    import sys
    app=QApplication(sys.argv)
    page=PageWidget()
    page.show()
    sys.exit(app.exec_())



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值