2023年7月7日发(作者:)
控件显⽰excel数据_PyQt5数据表格控件之数据库取数显⽰本次分享主要是介绍使⽤表格控件显⽰从数据库中取出的数据。 ⼀、数据准备1、创建数据库 本次利⽤安装好的数据库管理软件DBeaver,打开新建Mysql连接,输⼊主机名或IP地址:“localhost”或“127.0.0.1”,输⼊mysql数据库登录账号密码,本机均设置为“root”。最后点击“确定”,即可建⽴本地mysql数据库连接。 接着创建⼀个名为“test”的数据库,操作步骤:右键单击“数据库”—选择“新建数据库”菜单项—输⼊数据库信息,见下⽰意图。2、创建数据表向数据库中添加数据表如在“test”数据库中创建⼀个名叫“Build_data”的数据表,数据表单含义见下表字段idbuild_namebranchidrecord_datevalsitem_typename字段类型intvarchar(50)varchar(8)datedecimal(10,2)int(8)varchar(50)字段定义建筑编码建筑名称⽀路编号接受时间仪表数值分项类型⽀路名称import pymysql#打开数据库连接,参数:1、数据库ip 2、数据库账号3、数据库密码4、数据库名称db=t("localhost","root","root","test")#使⽤cursor()⽅法创建⼀个游标对象cursor=()# #使⽤execute()⽅法执⾏SQL查询e("drop table if exists Build_data")#使⽤预处理语句创建表sql="""create table Build_data(id int(8) not null auto_increment,build_name varchar(50) not null,branchid varchar(8) not null, record_date date default null,vals decimal(10,2) default null,item_type int(3) not null, name varchar(50) not null,primary key(id)) engine=myisam auto_increment=1 default charset=utf8;"""#执⾏sql语句e(sql)()3、操作Mysql数据表Mysql数据表的操作主要包括数据的增、删、改、查,与操作SQLite类似。⽰例向“Build_data”的数据表中新增加数据。可以使⽤excute()⽅法添加⼀条记录,也可以使⽤executemany()⽅法批量添加多条记录executemany(operation,seq_of_params)参数1:operation为sql操作语句。参数2:seq_of_params为参数序列,⼆维列表,类似于数据库中的每条记录。上具体代码-操作Mysql数据表,向表中插⼊多条数据记录#连接数据库import pymysql#打开数据库连接,参数:1、数据库ip 2、数据库账号3、数据库密码4、数据库名称5、设置字符集charset="utf8",可以防⽌插⼊中⽂时出现乱码db=t("localhost","root","root","test",charset="utf8")#使⽤cursor()⽅法创建⼀个游标对象cursor=()#数据列表data=[('A1','TX-1','2020-11-25','356.8','329','BRANCH_1'), ('B1','DL-1','2020-11-28','987.9','315','BRANCH_2'), ('C1','DL-1','2020-11-30','654.7','282','BRANCH_3'), ('D1','ZM-1','2020-12-01','90.23','291','BRANCH_4'), ('E1','KT-1','2020-12-02','77.765','295','BRANCH_5'),]#执⾏sql语句,插⼊多条数据try: #提交数据 ()except: #发⽣错误时回滚 ck()#关闭数据库连接() emany("insert into build_data(build_name,branchid,record_date,vals,item_type,name) values (%s,%s,%s,%s,%s,%s)",data) #”%s“作为占位符,⼆、表格控件显⽰数据PyQt5使⽤TableWidget表格控件显⽰数据主要⽤到QTableWidgetItem类,使⽤该类创建表格中的单元格,并指定显⽰⽂本或其他设置,即可使⽤TableWidget对象中setItem()⽅法将其添加到表格中。TableWidget常⽤⽅法及说明见PyQt5数据表格控件(⼀)。具体表格中单元格对象编辑⽅法未介绍,⼀个表由多个单元格组成,QTableWidgetItem类表⽰QTableWidget中的单元格。QTableWidgetItem类常⽤⽅法及说明见下表。setText()设置单位格的⽂本
设置指定单元格的选中状态setCheckState()1、d,单元格选中2、ked,单元格未选中setIcon()为单元格设置图标setBackground()setForeground()setFont()setSelected()text()设置单元格背景⾊设置单元格内⽂本颜⾊设置单元格内⽂本的字体设置是否选中单元格获取单元格⽂本⽰例操作:使⽤PyMysql模块从数据库中查询数据,并且将数据显⽰到TableWidget表格中。操作Mysql数据表import sysfrom ets import *from PyQt5 import QtGuiclass TableWidgetdemo(QWidget): def __init__(self): super().__init__() dowTitle("QTableWidget 例⼦") (400, 200) () def initUI(self): conLayout = QHBoxLayout() import pymysql #打开数据库连接 db = t("localhost", "root", "root", "test", charset="utf8") cursor = () e("select * from build_data") #执⾏查询语句,选择表中所有数据 result=ll() #获取所有记录 print(result) row=nt col=len(result[0]) () #关闭游标 () #关闭数据库连接 #构建QTableWidget对象,设置表格⾏列 tableWidget = QTableWidget() Count(row) umnCount(col) #设置表格的标题名称 izontalHeaderLabels(['id', 'build_name', 'branchid','record_date', 'vals', 'item_type','name']) ticalHeaderLabels(["1","2","3","4","5"]) #设置表格头的伸缩模式,horizontalHeader()函数设置表格为⾃适应的伸缩模式,即可根据窗⼝⼤⼩来改变⽹格的⼤⼩ ntalHeader().setSectionResizeMode(h) #设置最后⼀列⾃动填充容器 ntalHeader().setStretchLastSection(True) #向表格中添加数据 for i in range(row): for j in range(col): data=QTableWidgetItem(str(result[i][j])) #除了显⽰⽂字还可以显⽰图⽚ # 设置单元格⽂本颜⾊ eground((("blue"))) #设置背景颜⾊ kground((("pink"))) m(i, j, data) # 将表格变为禁⽌编辑,默认可编辑! # tTriggers(Triggers) # 设置表格为整⾏选择 ectionBehavior(Rows) # 将⾏和列的⼤⼩设为与内容相匹配 ColumnsToContents() RowsToContents() #表格颜⾊交错显⽰ ernatingRowColors(True) # 表格表头的显⽰与隐藏 # alHeader().setVisible(False) # ntalHeader().setVisible(False) # 不显⽰表格单元格的分割线 # wGrid(False) # 显⽰垂直表头 alHeader().setVisible(True) get(tableWidget) #将表格添加到⽔平布局中 out(conLayout) #设置当前窗⼝布局⽅式if __name__ == '__main__': app = QApplication() example = TableWidgetdemo() () (_())设置指定列的排序⽅式 使⽤QTableWidget对象的sortItems()⽅法,设置表格中指定列排序⽅式sortItems(column,order)参数1:column为整数,表⽰要排序的列索引参数2::order为⼀个枚举值,指排序⽅式。dingOrder降序;ingOrder升序⽰例:ems(3,dingOrder)指定列显⽰图⽚if j==3: data=QTableWidgetItem((""),str(result[i][j])#插⼊图和⽂字else: data=QTableWidgetItem(str(result[i][j])#插⼊⽂字向指定列添加标准控件#将第5列设置为ComboBox下拉列表for i in range(row): comBox = QComboBox() ms(["282", "291", "295", "329", "315"]) rentIndex(0) # 默认第⼀项 lWidget(i,5, comBox)其次合并单元格,此处不再累赘,见PyQt5数据表格控件(⼀)
发布者:admin,转转请注明出处:http://www.yc00.com/news/1688702245a163786.html
评论列表(0条)