【转】PyQt4 精彩实例分析 实例 7 表格的使用(一)

制作统计软件时经常会使用表格将资料列出,或是通过表格进行资料的设置,在 Qt 中可以使用
QTableWidget 实现一个表格。本实例演示如何使用表格,并在表格中嵌入控件。如下图所示为“表格的使
用”对话框。

QTableWidget 类提供了一个灵活的和可编辑的表格控件,包含很多 API,可以处理标题,行列,单元格和
选中区域,QTableWidget 可以嵌入编辑框或显示控件,并可通过拖动控制柄调节各单元格的大小。表格的
每一项可以定义成不同的属性,可以显示文本,也可以插入控件,这样给表格的使用带来了很好的扩展性。

本实例的实现代码如下:

 1 #!/usr/bin/python
 2 # -*- coding: utf-8 -*-
 3 
 4 from PyQt4.QtGui import *
 5 from PyQt4.QtCore import *
 6 import sys
 7 
 8 
 9 QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8"))
10 
11 class TableDialog(QTableWidget):
12 
13     def __init__(self, parent=None):
14         super(TableDialog, self).__init__(parent)
15 
16         self.setWindowTitle("My Table")
17         self.setGeometry(QRect(400, 400, 600, 400))
18         self.create_table()
19 
20     def create_table(self):
21         self.setColumnCount(5)
22         self.setRowCount(2)
23 
24         self.setItem(0, 0, QTableWidgetItem(self.tr("Sex")))
25         self.setItem(0, 1, QTableWidgetItem(self.tr("Name")))
26         self.setItem(0, 2, QTableWidgetItem(self.tr("Date")))
27         self.setItem(0, 3, QTableWidgetItem(self.tr("Job")))
28         self.setItem(0, 4, QTableWidgetItem(self.tr("Order")))
29 
30         lbp1 = QLabel()
31         lbp1.setPixmap(QPixmap("image/2048.ico"))
32         self.setCellWidget(1, 0, lbp1)
33         twi1 = QTableWidgetItem("Tom")
34         self.setItem(1, 1, twi1)
35         dte1 = QDateTimeEdit()
36         dte1.setDateTime(QDateTime.currentDateTime())
37         dte1.setDisplayFormat("yyyy/mm/dd")
38         dte1.setCalendarPopup(True)
39         self.setCellWidget(1, 2, dte1)
40         
41         cbw = QComboBox()
42         cbw.addItem("Worker")
43         cbw.addItem("Famer")
44         cbw.addItem("Doctor")
45         cbw.addItem("Lawyer")
46         cbw.addItem("Soldier")
47         
48         self.setCellWidget(1, 3, cbw)
49         sb1 = QSpinBox()
50         sb1.setRange(1000, 10000)
51         self.setCellWidget(1, 4, sb1)
52 
53 
54 def main():
55     app = QApplication(sys.argv)
56     form = TableDialog()
57     form.show()
58     app.exec_()
59 
60 if __name__ == '__main__':
61     main()

第 30-32 行在表格中插入一个 QLabel 控件,并设置 QLabel 的图形属性。

第 33-34 行设置表格单元的属性为文本显示。

第 35-39 行在表格中插入一个 QDateTimeEdit 控件,该控件可以编辑日期时间,setCalendarPopup()
方法设置是否弹出日历编辑器。

第 41-46 行在表格中插入一个 QComboBox 控件,调用 QTableWidget 的 setCellWidget()函数可在某个
指定的表格单元格中插入一个控件,函数的前两个参数用于指定单元格的行,列号。

第 48-51 行在表格中插入一个 QSpinBox 控件。

posted @ 2014-11-14 17:13  jakey.chen  阅读(973)  评论(0)    收藏  举报