python实现分页效果

时间:2022-10-08 10:38:11

本文实例为大家分享了python实现分页效果展示的具体代码,供大家参考,具体内容如下

难点:清空Layout

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/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_())

 效果图:

python实现分页效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://blog.csdn.net/jylonger/article/details/45767237