最强大脑记忆曲线(5)——主程序设计

目录

  • 第一步:打开主页面
    • 1.1 将ui文件转换成py文件,命令如下:
    • 1.2 用窗体转换后的python类构建Gui程序
      • ps 遇到的第一个问题
  • 第二步 设置主页面的默认参数
    • 加载当前学生信息
      • ps 出现的第二个问题 : 数据模型对应的信息为空
  • 第三步 打开主页的“待识记内容录入”菜单

第一步:打开主页面

1.1 将ui文件转换成py文件,命令如下:

  pyuic5 -o mainWindow.py  main.ui

·

·

1.2 用窗体转换后的python类构建Gui程序

脚本如下:
最强大脑记忆曲线(5)——主程序设计_第1张图片

·

ps 遇到的第一个问题

但是报错如下:attempted relative import with no known parent package
在这里插入图片描述

·
原因是什么?

----相对导入找不到父级包
相对导入通过使用模块的 name 属性来确定模块在包层次结构中的位置。如果该模块的名称不包含任何包信息(例如,它被设置为 main ),那么相对引用会认为这个模块就是顶级模块,而不管模块在文件系统上的实际位置。python解释器没有关于模块所属的包的任何信息( name = mainpackage = None ),因此它抛出了找不到父级包的异常。

·
解决方案

看了网上很多方案,有点看不懂,但有一点是清楚的,我建设的项目和主程序不在同一个目录下。像这样:
最强大脑记忆曲线(5)——主程序设计_第2张图片

所以,把主程序和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'))

效果如下:
最强大脑记忆曲线(5)——主程序设计_第3张图片

·

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()))

你可能感兴趣的:(家有儿女,ui,python,开发语言)