簡體   English   中英

將多個.ui文件導入main.py文件

[英]Importing multiple .ui files to main.py file

我已經設法將我的main_GUI文件導入到我的main.py文件中,但我想實現另一個GUI,它會顯示為單擊main_GUI文件中的按鈕。 那可能嗎?

這是我的主文件(bazapodataka.py),從中調用所有其他.ui文件

import sys
from PyQt4.QtSql import *
from PyQt4 import QtCore, QtGui, uic 

class TestApp(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)

        self.ui = uic.loadUi("C:\Python34\Lib\site-packages\PyQt4\BazaPodataka\database_GUI.ui")
        self.ui.show()  


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    win = TestApp()

db = QSqlDatabase.addDatabase("QPSQL")
db.setHostName("localhost")
db.setDatabaseName("BP Za bolnicu")
db.setUserName("postgres")
db.setPassword("zanoktica")
db.setPort(5432)
ok = db.open()

if ok:
    print("Connected to database")
else:
    print("Error connecting to database")

sys.exit(app.exec_())

這是我的main_GUI文件(database_GUI.ui)

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_Main_GUI_Widget(object):
    def setupUi(self, Main_GUI_Widget):
        Main_GUI_Widget.setObjectName(_fromUtf8("Main_GUI_Widget"))
        Main_GUI_Widget.resize(300, 228)
        self.horizontalLayout_5 = QtGui.QHBoxLayout(Main_GUI_Widget)
        self.horizontalLayout_5.setObjectName(_fromUtf8("horizontalLayout_5"))
        self.verticalLayout = QtGui.QVBoxLayout()
        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
        self.horizontalLayout = QtGui.QHBoxLayout()
        self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
        self.Add_button = QtGui.QPushButton(Main_GUI_Widget)
        self.Add_button.setObjectName(_fromUtf8("Add_button"))
        self.horizontalLayout.addWidget(self.Add_button)
        self.Add_comboBox = QtGui.QComboBox(Main_GUI_Widget)
        self.Add_comboBox.setObjectName(_fromUtf8("Add_comboBox"))
        self.Add_comboBox.addItem(_fromUtf8(""))
        self.Add_comboBox.addItem(_fromUtf8(""))
        self.Add_comboBox.addItem(_fromUtf8(""))
        self.Add_comboBox.addItem(_fromUtf8(""))
        self.Add_comboBox.addItem(_fromUtf8(""))
        self.Add_comboBox.addItem(_fromUtf8(""))
        self.Add_comboBox.addItem(_fromUtf8(""))
        self.Add_comboBox.addItem(_fromUtf8(""))
        self.Add_comboBox.addItem(_fromUtf8(""))
        self.Add_comboBox.addItem(_fromUtf8(""))
        self.Add_comboBox.addItem(_fromUtf8(""))
        self.Add_comboBox.addItem(_fromUtf8(""))
        self.horizontalLayout.addWidget(self.Add_comboBox)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.horizontalLayout_2 = QtGui.QHBoxLayout()
        self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
        self.Delete_button = QtGui.QPushButton(Main_GUI_Widget)
        self.Delete_button.setObjectName(_fromUtf8("Delete_button"))
        self.horizontalLayout_2.addWidget(self.Delete_button)
        self.Delete_comboBox = QtGui.QComboBox(Main_GUI_Widget)
        self.Delete_comboBox.setObjectName(_fromUtf8("Delete_comboBox"))
        self.Delete_comboBox.addItem(_fromUtf8(""))
        self.Delete_comboBox.addItem(_fromUtf8(""))
        self.Delete_comboBox.addItem(_fromUtf8(""))
        self.Delete_comboBox.addItem(_fromUtf8(""))
        self.Delete_comboBox.addItem(_fromUtf8(""))
        self.Delete_comboBox.addItem(_fromUtf8(""))
        self.Delete_comboBox.addItem(_fromUtf8(""))
        self.Delete_comboBox.addItem(_fromUtf8(""))
        self.Delete_comboBox.addItem(_fromUtf8(""))
        self.Delete_comboBox.addItem(_fromUtf8(""))
        self.Delete_comboBox.addItem(_fromUtf8(""))
        self.Delete_comboBox.addItem(_fromUtf8(""))
        self.horizontalLayout_2.addWidget(self.Delete_comboBox)
        self.verticalLayout.addLayout(self.horizontalLayout_2)
        self.horizontalLayout_3 = QtGui.QHBoxLayout()
        self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3"))
        self.Update_button = QtGui.QPushButton(Main_GUI_Widget)
        self.Update_button.setObjectName(_fromUtf8("Update_button"))
        self.horizontalLayout_3.addWidget(self.Update_button)
        self.Update_comboBox = QtGui.QComboBox(Main_GUI_Widget)
        self.Update_comboBox.setObjectName(_fromUtf8("Update_comboBox"))
        self.Update_comboBox.addItem(_fromUtf8(""))
        self.Update_comboBox.addItem(_fromUtf8(""))
        self.Update_comboBox.addItem(_fromUtf8(""))
        self.Update_comboBox.addItem(_fromUtf8(""))
        self.Update_comboBox.addItem(_fromUtf8(""))
        self.Update_comboBox.addItem(_fromUtf8(""))
        self.Update_comboBox.addItem(_fromUtf8(""))
        self.Update_comboBox.addItem(_fromUtf8(""))
        self.Update_comboBox.addItem(_fromUtf8(""))
        self.Update_comboBox.addItem(_fromUtf8(""))
        self.Update_comboBox.addItem(_fromUtf8(""))
        self.Update_comboBox.addItem(_fromUtf8(""))
        self.horizontalLayout_3.addWidget(self.Update_comboBox)
        self.verticalLayout.addLayout(self.horizontalLayout_3)
        self.horizontalLayout_4 = QtGui.QHBoxLayout()
        self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4"))
        self.Search_button = QtGui.QPushButton(Main_GUI_Widget)
        self.Search_button.setObjectName(_fromUtf8("Search_button"))
        self.horizontalLayout_4.addWidget(self.Search_button)
        self.Search_comboBox = QtGui.QComboBox(Main_GUI_Widget)
        self.Search_comboBox.setObjectName(_fromUtf8("Search_comboBox"))
        self.Search_comboBox.addItem(_fromUtf8(""))
        self.Search_comboBox.addItem(_fromUtf8(""))
        self.Search_comboBox.addItem(_fromUtf8(""))
        self.Search_comboBox.addItem(_fromUtf8(""))
        self.Search_comboBox.addItem(_fromUtf8(""))
        self.Search_comboBox.addItem(_fromUtf8(""))
        self.Search_comboBox.addItem(_fromUtf8(""))
        self.Search_comboBox.addItem(_fromUtf8(""))
        self.Search_comboBox.addItem(_fromUtf8(""))
        self.Search_comboBox.addItem(_fromUtf8(""))
        self.Search_comboBox.addItem(_fromUtf8(""))
        self.Search_comboBox.addItem(_fromUtf8(""))
        self.horizontalLayout_4.addWidget(self.Search_comboBox)
        self.verticalLayout.addLayout(self.horizontalLayout_4)
        self.horizontalLayout_5.addLayout(self.verticalLayout)

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

    def retranslateUi(self, Main_GUI_Widget):
        Main_GUI_Widget.setWindowTitle(_translate("Main_GUI_Widget", "Form", None))
        self.Add_button.setText(_translate("Main_GUI_Widget", "Add", None))
        self.Add_comboBox.setItemText(0, _translate("Main_GUI_Widget", "asistira", None))
        self.Add_comboBox.setItemText(1, _translate("Main_GUI_Widget", "kirurg", None))
        self.Add_comboBox.setItemText(2, _translate("Main_GUI_Widget", "konzultant", None))
        self.Add_comboBox.setItemText(3, _translate("Main_GUI_Widget", "nadgleda", None))
        self.Add_comboBox.setItemText(4, _translate("Main_GUI_Widget", "operacija", None))
        self.Add_comboBox.setItemText(5, _translate("Main_GUI_Widget", "pacijent", None))
        self.Add_comboBox.setItemText(6, _translate("Main_GUI_Widget", "privatni_pacijent", None))
        self.Add_comboBox.setItemText(7, _translate("Main_GUI_Widget", "sala", None))
        self.Add_comboBox.setItemText(8, _translate("Main_GUI_Widget", "sestra", None))
        self.Add_comboBox.setItemText(9, _translate("Main_GUI_Widget", "soba", None))
        self.Add_comboBox.setItemText(10, _translate("Main_GUI_Widget", "zaduzena_za_salu", None))
        self.Add_comboBox.setItemText(11, _translate("Main_GUI_Widget", "zaduzena_za_sobu", None))
        self.Delete_button.setText(_translate("Main_GUI_Widget", "Delete", None))
        self.Delete_comboBox.setItemText(0, _translate("Main_GUI_Widget", "asistira", None))
        self.Delete_comboBox.setItemText(1, _translate("Main_GUI_Widget", "kirurg", None))
        self.Delete_comboBox.setItemText(2, _translate("Main_GUI_Widget", "konzultant", None))
        self.Delete_comboBox.setItemText(3, _translate("Main_GUI_Widget", "nadgleda", None))
        self.Delete_comboBox.setItemText(4, _translate("Main_GUI_Widget", "operacija", None))
        self.Delete_comboBox.setItemText(5, _translate("Main_GUI_Widget", "pacijent", None))
        self.Delete_comboBox.setItemText(6, _translate("Main_GUI_Widget", "privatni_pacijent", None))
        self.Delete_comboBox.setItemText(7, _translate("Main_GUI_Widget", "sala", None))
        self.Delete_comboBox.setItemText(8, _translate("Main_GUI_Widget", "sestra", None))
        self.Delete_comboBox.setItemText(9, _translate("Main_GUI_Widget", "soba", None))
        self.Delete_comboBox.setItemText(10, _translate("Main_GUI_Widget", "zaduzena_za_salu", None))
        self.Delete_comboBox.setItemText(11, _translate("Main_GUI_Widget", "zaduzena_za_sobu", None))
        self.Update_button.setText(_translate("Main_GUI_Widget", "Update", None))
        self.Update_comboBox.setItemText(0, _translate("Main_GUI_Widget", "asistira", None))
        self.Update_comboBox.setItemText(1, _translate("Main_GUI_Widget", "kirurg", None))
        self.Update_comboBox.setItemText(2, _translate("Main_GUI_Widget", "konzultant", None))
        self.Update_comboBox.setItemText(3, _translate("Main_GUI_Widget", "nadgleda", None))
        self.Update_comboBox.setItemText(4, _translate("Main_GUI_Widget", "operacija", None))
        self.Update_comboBox.setItemText(5, _translate("Main_GUI_Widget", "pacijent", None))
        self.Update_comboBox.setItemText(6, _translate("Main_GUI_Widget", "privatni_pacijent", None))
        self.Update_comboBox.setItemText(7, _translate("Main_GUI_Widget", "sala", None))
        self.Update_comboBox.setItemText(8, _translate("Main_GUI_Widget", "sestra", None))
        self.Update_comboBox.setItemText(9, _translate("Main_GUI_Widget", "soba", None))
        self.Update_comboBox.setItemText(10, _translate("Main_GUI_Widget", "zaduzena_za_salu", None))
        self.Update_comboBox.setItemText(11, _translate("Main_GUI_Widget", "zaduzena_za_sobu", None))
        self.Search_button.setText(_translate("Main_GUI_Widget", "Search", None))
        self.Search_comboBox.setItemText(0, _translate("Main_GUI_Widget", "asistira", None))
        self.Search_comboBox.setItemText(1, _translate("Main_GUI_Widget", "kirurg", None))
        self.Search_comboBox.setItemText(2, _translate("Main_GUI_Widget", "konzultant", None))
        self.Search_comboBox.setItemText(3, _translate("Main_GUI_Widget", "nadgleda", None))
        self.Search_comboBox.setItemText(4, _translate("Main_GUI_Widget", "operacija", None))
        self.Search_comboBox.setItemText(5, _translate("Main_GUI_Widget", "pacijent", None))
        self.Search_comboBox.setItemText(6, _translate("Main_GUI_Widget", "privatni_pacijent", None))
        self.Search_comboBox.setItemText(7, _translate("Main_GUI_Widget", "sala", None))
        self.Search_comboBox.setItemText(8, _translate("Main_GUI_Widget", "sestra", None))
        self.Search_comboBox.setItemText(9, _translate("Main_GUI_Widget", "soba", None))
        self.Search_comboBox.setItemText(10, _translate("Main_GUI_Widget", "zaduzena_za_salu", None))
        self.Search_comboBox.setItemText(11, _translate("Main_GUI_Widget", "zaduzena_za_sobu", None))


if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    Main_GUI_Widget = QtGui.QWidget()
    ui = Ui_Main_GUI_Widget()
    ui.setupUi(Main_GUI_Widget)
    Main_GUI_Widget.show()
    sys.exit(app.exec_())

和我的最后一個gui文件(kirurg_GUI.ui)

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_kirurg_Widget(object):
    def setupUi(self, kirurg_Widget):
        kirurg_Widget.setObjectName(_fromUtf8("kirurg_Widget"))
        kirurg_Widget.resize(437, 301)
        self.horizontalLayout_6 = QtGui.QHBoxLayout(kirurg_Widget)
        self.horizontalLayout_6.setObjectName(_fromUtf8("horizontalLayout_6"))
        self.verticalLayout_2 = QtGui.QVBoxLayout()
        self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
        self.verticalLayout = QtGui.QVBoxLayout()
        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
        self.horizontalLayout = QtGui.QHBoxLayout()
        self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
        self.oib_kir_label = QtGui.QLabel(kirurg_Widget)
        self.oib_kir_label.setObjectName(_fromUtf8("oib_kir_label"))
        self.horizontalLayout.addWidget(self.oib_kir_label)
        self.oib_kir_lineEdit = QtGui.QLineEdit(kirurg_Widget)
        self.oib_kir_lineEdit.setObjectName(_fromUtf8("oib_kir_lineEdit"))
        self.horizontalLayout.addWidget(self.oib_kir_lineEdit)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.horizontalLayout_2 = QtGui.QHBoxLayout()
        self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
        self.prezime_label = QtGui.QLabel(kirurg_Widget)
        self.prezime_label.setObjectName(_fromUtf8("prezime_label"))
        self.horizontalLayout_2.addWidget(self.prezime_label)
        self.prezime_lineEdit = QtGui.QLineEdit(kirurg_Widget)
        self.prezime_lineEdit.setObjectName(_fromUtf8("prezime_lineEdit"))
        self.horizontalLayout_2.addWidget(self.prezime_lineEdit)
        self.verticalLayout.addLayout(self.horizontalLayout_2)
        self.horizontalLayout_3 = QtGui.QHBoxLayout()
        self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3"))
        self.ime_label = QtGui.QLabel(kirurg_Widget)
        self.ime_label.setObjectName(_fromUtf8("ime_label"))
        self.horizontalLayout_3.addWidget(self.ime_label)
        self.ime_lineEdit = QtGui.QLineEdit(kirurg_Widget)
        self.ime_lineEdit.setObjectName(_fromUtf8("ime_lineEdit"))
        self.horizontalLayout_3.addWidget(self.ime_lineEdit)
        self.verticalLayout.addLayout(self.horizontalLayout_3)
        self.horizontalLayout_4 = QtGui.QHBoxLayout()
        self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4"))
        self.adresa_label = QtGui.QLabel(kirurg_Widget)
        self.adresa_label.setObjectName(_fromUtf8("adresa_label"))
        self.horizontalLayout_4.addWidget(self.adresa_label)
        self.adresa_lineEdit = QtGui.QLineEdit(kirurg_Widget)
        self.adresa_lineEdit.setObjectName(_fromUtf8("adresa_lineEdit"))
        self.horizontalLayout_4.addWidget(self.adresa_lineEdit)
        self.verticalLayout.addLayout(self.horizontalLayout_4)
        self.horizontalLayout_5 = QtGui.QHBoxLayout()
        self.horizontalLayout_5.setObjectName(_fromUtf8("horizontalLayout_5"))
        self.broj_telefona_label = QtGui.QLabel(kirurg_Widget)
        self.broj_telefona_label.setObjectName(_fromUtf8("broj_telefona_label"))
        self.horizontalLayout_5.addWidget(self.broj_telefona_label)
        self.broj_telefona_lineEdit = QtGui.QLineEdit(kirurg_Widget)
        self.broj_telefona_lineEdit.setObjectName(_fromUtf8("broj_telefona_lineEdit"))
        self.horizontalLayout_5.addWidget(self.broj_telefona_lineEdit)
        self.verticalLayout.addLayout(self.horizontalLayout_5)
        self.verticalLayout_2.addLayout(self.verticalLayout)
        spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
        self.verticalLayout_2.addItem(spacerItem)
        self.kirurg_Add_button = QtGui.QPushButton(kirurg_Widget)
        self.kirurg_Add_button.setObjectName(_fromUtf8("kirurg_Add_button"))
        self.verticalLayout_2.addWidget(self.kirurg_Add_button)
        spacerItem1 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
        self.verticalLayout_2.addItem(spacerItem1)
        self.horizontalLayout_6.addLayout(self.verticalLayout_2)

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

    def retranslateUi(self, kirurg_Widget):
        kirurg_Widget.setWindowTitle(_translate("kirurg_Widget", "Form", None))
        self.oib_kir_label.setText(_translate("kirurg_Widget", "oib_kir (character(11) NOT NULL)", None))
        self.prezime_label.setText(_translate("kirurg_Widget", "prezime (text)", None))
        self.ime_label.setText(_translate("kirurg_Widget", "ime (text)", None))
        self.adresa_label.setText(_translate("kirurg_Widget", "adresa (text)", None))
        self.broj_telefona_label.setText(_translate("kirurg_Widget", "broj_telefona (varchar(12))", None))
        self.kirurg_Add_button.setText(_translate("kirurg_Widget", "Add", None))


if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    kirurg_Widget = QtGui.QWidget()
    ui = Ui_kirurg_Widget()
    ui.setupUi(kirurg_Widget)
    kirurg_Widget.show()
    sys.exit(app.exec_())

所以基本上,我設法將我的database_GUI.ui文件實現到我的bazapodataka.py文件中,但現在我想打開我的第二個GUI文件( kirurg_GUI.ui ),只有當我從comboBox選擇選項"kirurg"並單擊Add 那可能嗎?

編輯:當我在bazapodataka.py導入時,我的database_GUI.ui類是否轉發所有按鈕,組合框等?

另外,這是最好的方法嗎? 我的意思是,將外部GUI實現到一個主要的python文件?

編輯2:

import sys
from PyQt4.QtSql import *
from PyQt4 import QtCore, QtGui, uic
from database_GUI import Ui_Main_GUI_Widget
from kirurg_GUI import Ui_kirurg_Widget

class database_GUI(QtGui.QWidget, Ui_Main_GUI_Widget):
       def __init__(self):
              QtGui.QWidget.__init__(self)
              self.setupUi(self)

              button = QtGui.QPushButton("Add_button")
              button.clicked.connect(self.open_kirurg_ui)

       def open_kirurg_ui(self):
              kirurg = KirurgUi()
              kirurg.show()

class kirurg_GUI(QtGui.QWidget, Ui_kirurg_Widget):
        def __init__(self):
              QtGui.QWidget.__init__(self)
              self.setupUi(self)

if __name__ == "__main__":
       app = QtGui.QApplication(sys.argv)
       main_GUI = database_GUI()
       main_GUI.show()

db = QSqlDatabase.addDatabase("QPSQL")
db.setHostName("localhost")
db.setDatabaseName("BP Za bolnicu")
db.setUserName("postgres")
db.setPassword("zanoktica")
db.setPort(5432)
ok = db.open()

if ok:
    print("Connected to database")
else:
    print("Error connecting to database")

sys.exit(app.exec_())

由於某種原因,它不會連接到我的數據庫,除非在此之后放置該數據庫代碼:

if __name__ == "__main__":
           app = QtGui.QApplication(sys.argv)
           main_GUI = database_GUI()
           main_GUI.show()

是的,當然有可能,但我會考慮一些重構。

假設您有三個文件:

  • bazapodataka.py - 這是你的主要python文件,將加載所有UI
  • database_ui.py - 這是你的第一個UI
  • kirurg_ui.py - 在第一個UI中單擊按鈕時調用的UI

你的bazapodataka.py應該是這樣的:

import sys
from PyQt4.QtSql import *
from PyQt4 import QtCore, QtGui, uic
from database_ui import Ui_Main_Gui_Widget #importing UI as py files generated by pyuic
from kirurg_ui import Ui_kirurg_Widget

class TestApp(QtGui.QWidget, Ui_Main_Gui_Widget): #inherit from Ui_Main_Gui_Widget
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.setupUi() #call the Ui_Main_Gui_Widget's setupUi method

        self.kirurg_Add_button.clicked.connect(self.open_kirurg_ui)

    def open_kirurg_ui(self):
        if self.Add_comboBox.currentText() == "kirurg":
            kirurg = KirurgUi()
            kirurg.exec_()


class KirurgUi(QtGui.QWidget, Ui_kirurg_Widget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.setupUi()


db = QSqlDatabase.addDatabase("QPSQL")
db.setHostName("localhost")
db.setDatabaseName("BP Za bolnicu")
db.setUserName("postgres")
db.setPassword("zanoktica")
db.setPort(5432)
ok = db.open()
if ok:
    print("Connected to database")
else:
    print("Error connecting to database")

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

注意:我沒有測試應用程序,但它應該工作。

Pozdrav

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM