一.界面控件的绘制
选择“工具”→“External Tools”→“QtDesigner”启动designer,在左边工具栏选择label控件,双击将控件名改为“学号”,用于之前相同的方法修改文本至合适的大小,依次绘制“姓名”、“年龄”、“性别”、“所在系”。完成后点击保存。
2. 从工具箱选择“line Edit”控件,在“学号”后面绘制该控件,与先前一样右键后选择“更改样式表”,可以改变其显示的字体与大小。完成后复制控件,依次粘贴在“姓名”、“年龄”、“性别”、“所在系”之后:
3.观察右边的对象查看器,可以看到多出来了5个LineEdit对象,双击后可以进行编辑,将其依次修改为line1,line2,line3,line4,line5:
点击保存:
二.实现表格中选中行的数据显示
1.切换回Pycharm中,在Stats类构造函数下添加点击表格的事件函数:
self.ui.table1.itemClicked.connect(self.show_data)
再在类中添加类函数show_data
def show_data(self, Item=None):
# 如果单元格对象为空
if Item is None:
return
else:
row = Item.row() # 获取行数
sno = self.ui.table1.item(row,0).text()#获取该行内容
sname = self.ui.table1.item(row, 1).text()
ssex = self.ui.table1.item(row, 2).text()
ssage= self.ui.table1.item(row, 3).text()
sdept = self.ui.table1.item(row, 4).text()
self.ui.line1.setText(sno) #显示到5个编辑框中
self.ui.line2.setText(sname)
self.ui.line3.setText(ssex)
self.ui.line4.setText(ssage)
self.ui.line5.setText(sdept)
添加后的效果如下图:
这样在点击表格中的单元格时,会调用show_data函数并以当前单元格信息作为参数,通过获取当前的行数,来得到当前行内的所有信息,再显示在line1-line5这5个控件上
2.右键后选择“运行”结果如下:
三.实现数据的添加
1.回到Designer中,在工具栏中找到pushbutton,将其绘制到主窗口中,双击进行编辑,将其更改为“添加”,右键选择“更改样式”将文本更改到合适的字体和大小,同时在对象查看器中,将此时刚出现的对象名“pushbutton”修改为“add_button”。
2.切换回Pycharm中,在Stats类构造函数下添加点击button的事件函数:
self.ui.add_button.clicked.connect(self.add_Line)
并添加类函数add_Line:
def add_Line(self): # 关闭窗口
sno = self.ui.line1.text() # 获取输入框的内容
sname = self.ui.line2.text()
ssex = self.ui.line3.text()
sage = self.ui.line4.text()
sdept = self.ui.line5.text()
cur.execute(f'select * from student where sno = \'%s\' ;' % (sno))
result = cur.fetchall()
if result != []:
QMessageBox.about(self.ui, '提示', '该学号已存在,无法添加')
return 0
self.ui.table1.insertRow(self.row) # 增加新行
self.add_cell(self.row, 0, sno)
self.add_cell(self.row, 1, sname)
self.add_cell(self.row, 2, ssex)
self.add_cell(self.row, 3, sage)
self.add_cell(self.row, 4, sdept)
self.row += 1
val = (sno, sname, ssex, int(sage), sdept)
cur.execute("insert into student(Sno, Sname, Ssex, Sage, Sdept) VALUES (%s,%s,%s,%s,%s);", val)
conn.commit()
self.ui.line1.clear() # 清理编辑框的内容
self.ui.line2.clear()
self.ui.line3.clear()
self.ui.line4.clear()
self.ui.line5.clear()
QMessageBox.about(self.ui, '提示', '添加成功')
添加后结果如下:
这样在点击“添加”按键时,会自动调用add_Line类函数将编辑框的内容显示出来,并用SQL语句将数据添加进数据库,这里需要事先判断主码是否重复,并添加相应的提示框。
3.右键点击运行:
可以看到上图已经添加成功。