【发布时间】:2021-04-06 01:36:21
【问题描述】:
我正在编写一个程序来一起计算游戏的属性。 我使用 PyQt5 作为 GUI 和 SQLite 作为数据库。我从 PyQt5-Designer 将我的代码写入该文件中,并为数据库访问编写了一个文件。它看起来像这样:
#gui.py
from PyQt5.QtCore import QRect, QMetaObject, QCoreApplication
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QComboBox, QWidget, QLabel, QSpinBox, QCheckBox, QMenuBar, QStatusBar
from PyQt5 import QtWidgets
import database_access
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
if MainWindow.objectName():
MainWindow.setObjectName(u"MainWindow")
MainWindow.resize(640, 480)
self.centralwidget = QWidget(MainWindow)
self.centralwidget.setObjectName(u"centralwidget")
self.l_td2bc = QLabel(self.centralwidget)
self.l_td2bc.setObjectName(u"l_td2bc")
self.l_td2bc.setGeometry(QRect(20, 10, 391, 31))
font3 = QFont()
font3.setPointSize(12)
self.CB_pw_1 = QComboBox(self.centralwidget)
self.CB_pw_1.setObjectName(u"CB_pw_1")
self.CB_pw_1.setGeometry(QRect(20, 190, 180, 22))
self.CB_pw_1.setFont(font3)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QMenuBar(MainWindow)
self.menubar.setObjectName(u"menubar")
self.menubar.setGeometry(QRect(0, 0, 1119, 21))
MainWindow.setMenuBar(self.menubar)
self.statusbar = QStatusBar(MainWindow)
self.statusbar.setObjectName(u"statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QMetaObject.connectSlotsByName(MainWindow)
# setupUi
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
#own code
self.CB_pw_1.addItems(database_access.wp_core_attributes01())
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
# database_access.py
import sqlite3
def wp_core_attributes01():
db_conn = sqlite3.connect('td2_db.db')
c = db_conn.cursor()
c.execute("SELECT core_attribute01 FROM 'Wp Core Attributes'")
data = [item[0] for item in c.fetchall()]
db_conn.commit()
db_conn.close()
return data
这只是一个示例(只是一个组合框)的一小部分。但它正在工作。我可以打开组合框,我可以看到数据库中的条目。现在我想将我的代码中的每一个从 gui.py 移动到一个新文件 start.py 并从那里启动它。现在这是我的问题。我试过这个:
start.py
import database_access
from PyQt5 import QtWidgets
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
def pw():
ui.setupUi(MainWindow).CB_pw_1.addItems(database_access.wp_core_attributes01())
pw()
但是它不起作用,我如何从一个类内部,从不同的文件调用一个函数? 我用谷歌搜索了它,但我没有找到这样的东西。我可以这样做吗?如果不是,我该怎么做? 提前感谢您的帮助,并为我的英语不好感到抱歉。
【问题讨论】: