Python 在PyQT5窗口和对话框之间共享SQlite数据库

Python 在PyQT5窗口和对话框之间共享SQlite数据库,python,sqlite,pyqt5,Python,Sqlite,Pyqt5,我正在为我的毕业论文制作一个应用程序。此应用程序将excel spreadhseet导入sqlite数据库并使用它。因为我不打算制作GUI,所以我使用python中的sqlite3库,并制作了一个巨大的库来处理它。但是现在我已经在PyQt5中制作了GUI,我遇到了问题 首先,快速提问,我不知道这是否是处理对话的正确方法。我现在拥有它们的方式是: class Main_window(QtWidgets.QMainWindow, main_window.Ui_MainWindow): def

我正在为我的毕业论文制作一个应用程序。此应用程序将excel spreadhseet导入sqlite数据库并使用它。因为我不打算制作GUI,所以我使用python中的sqlite3库,并制作了一个巨大的库来处理它。但是现在我已经在PyQt5中制作了GUI,我遇到了问题

首先,快速提问,我不知道这是否是处理对话的正确方法。我现在拥有它们的方式是:

class Main_window(QtWidgets.QMainWindow, main_window.Ui_MainWindow):
    def __init__(self....):
        ...
    def showresultswindow(self):
        if results_window != None:
             results_window = Results_Window(self)

class Results_window(QtWidgets.QMainWindow, results_window.Ui_MainWindow):
    def __init__(self, parent):
        ...
当对话框只需读取数据库时,它就会工作,对话框就会打开并按预期工作。但是现在我正在创建一个对话框来写入数据库,但我无法让它工作

该应用程序的主窗口有两个QSqlTableModels显示数据库。为了将数据写入数据库,我要做的是:

  • 主窗口类关闭与QtSql库一起使用的数据库
  • 主窗口调用一个函数,该函数使用sqlite3打开数据库,写入必须写入的内容,然后关闭数据库
  • 函数完成后,主窗口类重新打开数据库,并用新数据再次填充QSqlTableModels
但是,当我创建用于写入数据的对话框时,我无法遵循该过程。当对话框在另一个线程中打开时,如果我关闭数据库,创建对话框,然后打开它,则在接受对话框并写入数据时,数据库将被锁定

我曾想过创建一个while循环,只要对话框打开,它就会一直运行,但它会挂起软件(无限while循环往往会这样做)

我知道使用qtsql库处理所有数据库输入和输出是正确的方法,但我必须重写一个长库,我更喜欢在这样做之前尝试另一个选项。即使这样,我也不知道该怎么办:

  • 将QSqlQuery对象传递给对话框并使用它
  • 是否将QSqlDatabase对象传递给对话框

非常感谢你的帮助

欢迎来到stackoverflow!请查看访问的分钟数,特别是您可能想了解的。提出好问题是获得好答案的关键!欢迎来到stackoverflow!请查看访问的分钟数,特别是您可能想了解的。提出好问题是获得好答案的关键!