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_())