目录
第一步:打开主页面
1.1 将ui文件转换成py文件,命令如下:
pyuic5 -o mainWindow.py main.ui
·
·
1.2 用窗体转换后的python类构建Gui程序
脚本如下:
·
ps 遇到的第一个问题
但是报错如下:attempted relative import with no known parent package
·
原因是什么?
----相对导入找不到父级包
相对导入通过使用模块的 name 属性来确定模块在包层次结构中的位置。如果该模块的名称不包含任何包信息(例如,它被设置为 main ),那么相对引用会认为这个模块就是顶级模块,而不管模块在文件系统上的实际位置。python解释器没有关于模块所属的包的任何信息( name = main 和 package = None ),因此它抛出了找不到父级包的异常。
·
解决方案
看了网上很多方案,有点看不懂,但有一点是清楚的,我建设的项目和主程序不在同一个目录下。像这样:
所以,把主程序和import的那个文件都放到"项目所在的目录jiyiquxian"下,问题就解决了。
·
第二步 设置主页面的默认参数
·
加载当前学生信息
打开数据库后,给cB_Stu控件添加Model:
self.db = QtSql.QSqlDatabase.addDatabase('QSQLITE') # 加载数据库驱动
self.db.setDatabaseName('jiyiquxian.db') # 打开数据库,库名可以带路径
if self.db.open():
# 打开4张表
self.tableModelStu = QtSql.QSqlTableModel()
self.tableModelStu.setTable('student')
self.ui.cB_Stu.setModel(self.tableModelStu)
self.ui.cB_Stu.setModelColumn(self.tableModelStu.fieldIndex('stu_name'))
效果如下:
·
ps 出现的第二个问题 : 数据模型对应的信息为空
·
第二天运行时,用户信息又不再展示出来了,也没有报错。
问题原因
少了一句非常重要的话:
self.tableModelStu.select() # 这一句很重要
·
第三步 打开主页的“待识记内容录入”菜单
初始化程序中增加
self.ui.listWidget.itemClicked.connect(self.listChange)
listChange槽函数中这么写
def listChange(self):
if self.ui.listWidget.item(1).isSelected(): # 背单词页
self.ui.stackedWidget.setCurrentIndex(0)
# print('当前点击的是{}'.format(self.ui.listWidget.currentItem().text()))
elif self.ui.listWidget.item(5).isSelected(): # 录入字词页
self.ui.stackedWidget.setCurrentIndex(3)
print('当前点击的是{}'.format(self.ui.listWidget.currentItem().text()))
版权归原作者 zwy_0309 所有, 如有侵权,请联系我们删除。