Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将多个.ui文件导入main.py文件_Python_Database_User Interface_Pyqt - Fatal编程技术网

Python 将多个.ui文件导入main.py文件

Python 将多个.ui文件导入main.py文件,python,database,user-interface,pyqt,Python,Database,User Interface,Pyqt,我已经成功地将我的main\u GUI文件导入到我的main.py文件中,但我想实现另一个GUI,它将作为单击main\u GUI文件中的按钮的结果显示。可能吗 这是我的主文件(bazapodataka.py),从中可以调用所有其他.ui文件 这是我的主GUI文件(database\u GUI.ui) 和我的最后一个gui文件(kiurg_gui.ui) 因此,基本上,我成功地将我的database\u GUI.ui文件实现到我的bazapodataka.py文件中,但现在我想打开我的第二个GU

我已经成功地将我的
main\u GUI
文件导入到我的
main.py
文件中,但我想实现另一个GUI,它将作为单击
main\u GUI
文件中的按钮的结果显示。可能吗

这是我的主文件(bazapodataka.py),从中可以调用所有其他.ui文件 这是我的主GUI文件(database\u GUI.ui) 和我的最后一个gui文件(kiurg_gui.ui) 因此,基本上,我成功地将我的
database\u GUI.ui
文件实现到我的
bazapodataka.py
文件中,但现在我想打开我的第二个GUI文件(
kiurg\u GUI.ui
),只要我从
组合框中选择选项
“kiurg”
,然后单击
添加
。可能吗

编辑:在bazapodataka.py中导入时,我的database_GUI.ui类是否转发它的所有按钮、组合框等

还有,这是最好的方法吗?我的意思是,在一个主python文件中实现外部GUI

编辑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
    -哪个是将加载所有UI的主python文件
  • 数据库\u ui.py
    -哪一个是您的第一个ui
  • kiurg_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_())
注意:我没有测试该应用程序,但它应该可以工作


波兹德拉夫你好!为什么不使用与database_GUI.ui相同的机制?您应该只将其连接到添加按钮。单击了信号。好的,我使用了相同的机制,现在它打开了两个GUI,但我现在不知道如何实现添加按钮。单击信号?另外,组合框必须设置为“Kirrug”,然后在我单击Add之后,它应该会打开新的GUI。我想让其他组合框选项打开新的GUI。Deusdies已经回答了。我做了你写的,它打开了database_GUI(主GUI),但单击Add后什么也没有发生。为了让代码正常工作,我还必须做一些调整,我将把它作为编辑放在我的第一篇文章中,这样你们就可以看到了。还有一件事,我想做一些IF子句,只有当comboBox被设置为“Kirrug”(这是第二个选项),如果我点击Add,它会打开Kirrug_GUIYeah,我刚才也有同样的想法,现在它会显示Kirrug屏幕一秒钟,然后它就会消失。另外,添加if子句怎么样?:)@卢卡,我修改了密码。将
show()
更改为
exec()。另外,我已经修改了它,以便您使用
QComboBox
进行if检查,假设您是指使用exec_979;()的
self.Add_comboBox
显示了一个错误,但我发现在该函数中放置名为kirrug的全局变量可以解决该问题。是的,组合框部分工作正常,非常感谢:)
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()
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_())