I am writing a program to calculate attributes from a game together. I used PyQt5 for a GUI and SQLite for database. I wrote a file my code in to this file from PyQt5-Designer and one file for a Database access. It looks like this:
#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
This is just a example (just one combobox) a little part. But it is working. I can open the combobox and I can see entries from the database. Now I want to move every on my code from the gui.py to a new file start.py and start it from there. And now here is my problem. I tried this:
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()
but is it not working, how do I call a function from inside of a class, from a different file? I googled it but I did not find anything like this. Can I do this this way? And if not how can i do this? Thanks for help in advance and sorry for my bad English.