Python 如何在PyQt5中使用多个UI文件

Python 如何在PyQt5中使用多个UI文件,python,python-3.x,pyqt,pyqt5,qt-designer,Python,Python 3.x,Pyqt,Pyqt5,Qt Designer,我写了一个程序,但是当我运行这个程序时,它从另一个.ui文件创建了一个新窗口,它实际上做了我想要的事情,但我不想创建一个窗口。我想在不创建新窗口的情况下使用.ui文件。我能做什么 这是ui文件。我使用Pyuic5转换为py from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Add_Customer(object): def setupUi(self, Add_Customer): Add_Customer.setO

我写了一个程序,但是当我运行这个程序时,它从另一个.ui文件创建了一个新窗口,它实际上做了我想要的事情,但我不想创建一个窗口。我想在不创建新窗口的情况下使用.ui文件。我能做什么

这是ui文件。我使用Pyuic5转换为py

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Add_Customer(object):
    def setupUi(self, Add_Customer):
        Add_Customer.setObjectName("Add_Customer")
        Add_Customer.resize(1134, 605)
        Add_Customer.setGeometry(350,175,1000,600)
        Add_Customer.setStyleSheet("*{background-color: rgb(47,47,47);\n"
"}\n"
"\n"
"QLineEdit{\n"
"\n"
"background: transparent;\n"
"border: none;\n"
"color:rgb(204, 204, 203);\n"
"border-bottom: 1px solid rgb(204, 204, 203);\n"
"font:32px;\n"
"}\n"
"\n"
"\n"
"#pb_save::Pressed{\n"
"background-color: rgb(34,34,34)\n"
"}\n"
"#pb_save{\n"
"border-radius:15px;\n"
"font: 32Pt \"Century Gothic\";\n"
"color: rgb(104,104,103);\n"
"background-color: rgb(17,17,17)\n"
"}")
        self.centralwidget = QtWidgets.QWidget(Add_Customer)
        self.centralwidget.setObjectName("centralwidget")
        self.LineName = QtWidgets.QLineEdit(self.centralwidget)
        self.LineName.setGeometry(QtCore.QRect(330, 60, 501, 51))
        self.LineName.setText("")
        self.LineName.setObjectName("LineName")
        self.pb_save = QtWidgets.QPushButton(self.centralwidget)
        self.pb_save.setGeometry(QtCore.QRect(320, 450, 531, 81))
        self.pb_save.setObjectName("pb_save")
        self.LineProduct = QtWidgets.QLineEdit(self.centralwidget)
        self.LineProduct.setGeometry(QtCore.QRect(330, 160, 501, 51))
        self.LineProduct.setText("")
        self.LineProduct.setObjectName("LineProduct")
        self.LinePrice = QtWidgets.QLineEdit(self.centralwidget)
        self.LinePrice.setGeometry(QtCore.QRect(330, 260, 501, 51))
        self.LinePrice.setText("")
        self.LinePrice.setObjectName("LinePrice")
        self.LineDate = QtWidgets.QLineEdit(self.centralwidget)
        self.LineDate.setGeometry(QtCore.QRect(330, 360, 501, 51))
        self.LineDate.setText("")
        self.LineDate.setObjectName("LineDate")
        Add_Customer.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(Add_Customer)
        self.statusbar.setObjectName("statusbar")
        Add_Customer.setStatusBar(self.statusbar)

        self.retranslateUi(Add_Customer)
        QtCore.QMetaObject.connectSlotsByName(Add_Customer)

    def retranslateUi(self, Add_Customer):
        _translate = QtCore.QCoreApplication.translate
        self.LineName.setPlaceholderText(_translate("Add_Customer", "Customer name"))
        self.pb_save.setText(_translate("Add_Customer", "save"))
        self.LineProduct.setPlaceholderText(_translate("Add_Customer", "Product"))
        self.LinePrice.setPlaceholderText(_translate("Add_Customer", "Price"))
        self.LineDate.setPlaceholderText(_translate("Add_Customer", "Date"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Add_Customer = QtWidgets.QMainWindow()
    ui = Ui_Add_Customer()
    ui.setupUi(Add_Customer)
    Add_Customer.show()
    sys.exit(app.exec_())
主文件

from Main_ui import Ui_MainWindow #note Main_ui works nicely
from PyQt5 import QtCore
from PyQt5.QtWidgets import QMainWindow, QApplication, QLineEdit, QHBoxLayout
from Add_Customer import Ui_Add_Customer
import sqlite3
import sys


class MyApp(QMainWindow):
    def __init__(self):
        super(MyApp, self).__init__()
        self.Main_ui = Ui_MainWindow()
        self.Main_ui.setupUi(self)
        self.events()

    def events(self):
        self.Main_ui.pb_Add_Customer.clicked.connect(self.Add_Customer)
    def Add_Customer(self):
        self.window = QMainWindow()
        self.musteri_win = Ui_Add_Customer()
        self.musteri_win.setupUi(self.window)
        self.window.show()
        sql = sqlite3.connect("customer_databasee.sqlite")
        curs = sql.cursor()
        curs.execute("""CREATE TABLE IF NOT EXISTS products
        (id integer primary key autoincrement, name, product, price, date)""")
        curs.execute("insert into products (name) values('Ahmet')")
        sql.commit()
        sql.close()

    def close(self):
        self.window.hide()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = MyApp()
    win.show()
    sys.exit(app.exec_())
如何防止新窗口打开?

试试:

import sys
import sqlite3
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QApplication, QLineEdit, QHBoxLayout

#from Main_ui import Ui_MainWindow                     # note Main_ui works nicely

#from Add_Customer import Ui_Add_Customer
class Ui_Add_Customer(object):
    def setupUi(self, Add_Customer):
        Add_Customer.setObjectName("Add_Customer")
        Add_Customer.resize(1134, 605)
        Add_Customer.setGeometry(350,175,1000,600)
        Add_Customer.setStyleSheet("*{background-color: rgb(47,47,47);\n"
"}\n"
"\n"
"QLineEdit{\n"
"\n"
"background: transparent;\n"
"border: none;\n"
"color:rgb(204, 204, 203);\n"
"border-bottom: 1px solid rgb(204, 204, 203);\n"
"font:32px;\n"
"}\n"
"\n"
"\n"
"#pb_save::Pressed{\n"
"background-color: rgb(34,34,34)\n"
"}\n"
"#pb_save{\n"
"border-radius:15px;\n"
"font: 32Pt \"Century Gothic\";\n"
"color: rgb(104,104,103);\n"
"background-color: rgb(17,17,17)\n"
"}")
        self.centralwidget = QtWidgets.QWidget(Add_Customer)
        self.centralwidget.setObjectName("centralwidget")
        self.LineName = QtWidgets.QLineEdit(self.centralwidget)
        self.LineName.setGeometry(QtCore.QRect(330, 60, 501, 51))
        self.LineName.setText("")
        self.LineName.setObjectName("LineName")
        self.pb_save = QtWidgets.QPushButton(self.centralwidget)
        self.pb_save.setGeometry(QtCore.QRect(320, 450, 531, 81))
        self.pb_save.setObjectName("pb_save")
        self.LineProduct = QtWidgets.QLineEdit(self.centralwidget)
        self.LineProduct.setGeometry(QtCore.QRect(330, 160, 501, 51))
        self.LineProduct.setText("")
        self.LineProduct.setObjectName("LineProduct")
        self.LinePrice = QtWidgets.QLineEdit(self.centralwidget)
        self.LinePrice.setGeometry(QtCore.QRect(330, 260, 501, 51))
        self.LinePrice.setText("")
        self.LinePrice.setObjectName("LinePrice")
        self.LineDate = QtWidgets.QLineEdit(self.centralwidget)
        self.LineDate.setGeometry(QtCore.QRect(330, 360, 501, 51))
        self.LineDate.setText("")
        self.LineDate.setObjectName("LineDate")
        Add_Customer.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(Add_Customer)
        self.statusbar.setObjectName("statusbar")
        Add_Customer.setStatusBar(self.statusbar)

        self.retranslateUi(Add_Customer)
        QtCore.QMetaObject.connectSlotsByName(Add_Customer)

    def retranslateUi(self, Add_Customer):
        _translate = QtCore.QCoreApplication.translate
        self.LineName.setPlaceholderText(_translate("Add_Customer", "Customer name"))
        self.pb_save.setText(_translate("Add_Customer", "save"))
        self.LineProduct.setPlaceholderText(_translate("Add_Customer", "Product"))
        self.LinePrice.setPlaceholderText(_translate("Add_Customer", "Price"))
        self.LineDate.setPlaceholderText(_translate("Add_Customer", "Date"))

# ++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
class Add_Customer(QMainWindow, Ui_Add_Customer):
    def __init__(self, parent=None):
        super(Add_Customer, self).__init__(parent)
        
        self.setupUi(self)
        
        self.pb_save.clicked.connect(self.save_clicked)
        
    def save_clicked(self):
        print(f'class Add_Customer: def save_clicked(self):')
# ++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        

class MyApp(QMainWindow):
    def __init__(self):
        super(MyApp, self).__init__()
#        self.Main_ui = Ui_MainWindow()
#        self.Main_ui.setupUi(self)

        self.pb_Add_Customer = QtWidgets.QPushButton('CREATE TABLE', self)  # +
        self.pb_Add_Customer.clicked.connect(self.add_Customer)             # +

#        self.events()
#    def events(self):
#        self.Main_ui.pb_Add_Customer.clicked.connect(self.Add_Customer)
#        self.pb_Add_Customer.clicked.connect(self.Add_Customer)

        self.window = Add_Customer(self)                                     # +
        
    def add_Customer(self):
#        self.window = QMainWindow()
#        self.musteri_win = Ui_Add_Customer()
#        self.musteri_win.setupUi(self.window)
         
        self.window.show()
        self.hide()                                                          # +
        
        sql = sqlite3.connect("customer_databasee.db")  #sqlite")
        curs = sql.cursor()
        curs.execute("""CREATE TABLE IF NOT EXISTS products
        (id integer primary key autoincrement, name, product, price, date)""")
        curs.execute("insert into products (name) values('Ahmet')")
        sql.commit()
        sql.close()

#    def close(self):
#        self.window.hide()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = MyApp()
    win.show()
    sys.exit(app.exec_())
试试看:

import sys
import sqlite3
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QApplication, QLineEdit, QHBoxLayout

#from Main_ui import Ui_MainWindow                     # note Main_ui works nicely

#from Add_Customer import Ui_Add_Customer
class Ui_Add_Customer(object):
    def setupUi(self, Add_Customer):
        Add_Customer.setObjectName("Add_Customer")
        Add_Customer.resize(1134, 605)
        Add_Customer.setGeometry(350,175,1000,600)
        Add_Customer.setStyleSheet("*{background-color: rgb(47,47,47);\n"
"}\n"
"\n"
"QLineEdit{\n"
"\n"
"background: transparent;\n"
"border: none;\n"
"color:rgb(204, 204, 203);\n"
"border-bottom: 1px solid rgb(204, 204, 203);\n"
"font:32px;\n"
"}\n"
"\n"
"\n"
"#pb_save::Pressed{\n"
"background-color: rgb(34,34,34)\n"
"}\n"
"#pb_save{\n"
"border-radius:15px;\n"
"font: 32Pt \"Century Gothic\";\n"
"color: rgb(104,104,103);\n"
"background-color: rgb(17,17,17)\n"
"}")
        self.centralwidget = QtWidgets.QWidget(Add_Customer)
        self.centralwidget.setObjectName("centralwidget")
        self.LineName = QtWidgets.QLineEdit(self.centralwidget)
        self.LineName.setGeometry(QtCore.QRect(330, 60, 501, 51))
        self.LineName.setText("")
        self.LineName.setObjectName("LineName")
        self.pb_save = QtWidgets.QPushButton(self.centralwidget)
        self.pb_save.setGeometry(QtCore.QRect(320, 450, 531, 81))
        self.pb_save.setObjectName("pb_save")
        self.LineProduct = QtWidgets.QLineEdit(self.centralwidget)
        self.LineProduct.setGeometry(QtCore.QRect(330, 160, 501, 51))
        self.LineProduct.setText("")
        self.LineProduct.setObjectName("LineProduct")
        self.LinePrice = QtWidgets.QLineEdit(self.centralwidget)
        self.LinePrice.setGeometry(QtCore.QRect(330, 260, 501, 51))
        self.LinePrice.setText("")
        self.LinePrice.setObjectName("LinePrice")
        self.LineDate = QtWidgets.QLineEdit(self.centralwidget)
        self.LineDate.setGeometry(QtCore.QRect(330, 360, 501, 51))
        self.LineDate.setText("")
        self.LineDate.setObjectName("LineDate")
        Add_Customer.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(Add_Customer)
        self.statusbar.setObjectName("statusbar")
        Add_Customer.setStatusBar(self.statusbar)

        self.retranslateUi(Add_Customer)
        QtCore.QMetaObject.connectSlotsByName(Add_Customer)

    def retranslateUi(self, Add_Customer):
        _translate = QtCore.QCoreApplication.translate
        self.LineName.setPlaceholderText(_translate("Add_Customer", "Customer name"))
        self.pb_save.setText(_translate("Add_Customer", "save"))
        self.LineProduct.setPlaceholderText(_translate("Add_Customer", "Product"))
        self.LinePrice.setPlaceholderText(_translate("Add_Customer", "Price"))
        self.LineDate.setPlaceholderText(_translate("Add_Customer", "Date"))

# ++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
class Add_Customer(QMainWindow, Ui_Add_Customer):
    def __init__(self, parent=None):
        super(Add_Customer, self).__init__(parent)
        
        self.setupUi(self)
        
        self.pb_save.clicked.connect(self.save_clicked)
        
    def save_clicked(self):
        print(f'class Add_Customer: def save_clicked(self):')
# ++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        

class MyApp(QMainWindow):
    def __init__(self):
        super(MyApp, self).__init__()
#        self.Main_ui = Ui_MainWindow()
#        self.Main_ui.setupUi(self)

        self.pb_Add_Customer = QtWidgets.QPushButton('CREATE TABLE', self)  # +
        self.pb_Add_Customer.clicked.connect(self.add_Customer)             # +

#        self.events()
#    def events(self):
#        self.Main_ui.pb_Add_Customer.clicked.connect(self.Add_Customer)
#        self.pb_Add_Customer.clicked.connect(self.Add_Customer)

        self.window = Add_Customer(self)                                     # +
        
    def add_Customer(self):
#        self.window = QMainWindow()
#        self.musteri_win = Ui_Add_Customer()
#        self.musteri_win.setupUi(self.window)
         
        self.window.show()
        self.hide()                                                          # +
        
        sql = sqlite3.connect("customer_databasee.db")  #sqlite")
        curs = sql.cursor()
        curs.execute("""CREATE TABLE IF NOT EXISTS products
        (id integer primary key autoincrement, name, product, price, date)""")
        curs.execute("insert into products (name) values('Ahmet')")
        sql.commit()
        sql.close()

#    def close(self):
#        self.window.hide()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = MyApp()
    win.show()
    sys.exit(app.exec_())