python - 如何在一个文件中合并多个 .py 和 .ui 文件?
问题描述
我有双语申请。在 QtDesigner 中,我制作了两个界面:gui_eng.ui 和 gui_rus.ui。对于它们中的每一个,都存在 main_gui_eng.py 和 main_gui_rus.py 文件以及这些 .ui 文件的配置代码。更重要的是,存在main.py 文件(根据上次关闭时从main_gui_eng.py 或main_gui_rus.py 开始)。main.py 将被转换为 .exe 文件。在每个文件中,我使用以下方式连接 .ui:
main_window = uic.loadUiType('gui_eng.ui')[0]
class WIZWindow(QMainWindow, main_window):
问题:我怎么能以这种方式连接它们?如果我在 main.py 中写:
import main_gui_eng
它没有打开所需的 .ui 文件...
解决方案
1pyuic5 gui_eng.ui -o gui_eng.py
2pyuic5 gui_rus.ui -o gui_rus.py
3python main_eng_rus.py
4pyinstaller -c -F main_eng_rus.py
5main_eng_rus.exe
main_gui_eng.py
from PyQt5.QtWidgets import QMainWindow, QApplication
# pyuic5 gui_eng.ui -o gui_eng.py
from gui_eng import Ui_MainWindow
class Window(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(Window, self).__init__(parent)
self.parent = parent
self.setupUi(self)
def closeEvent(self, event):
self.hide()
self.parent.show()
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
w = Window()
w.setWindowTitle("main_gui_eng.py")
w.show()
sys.exit(app.exec_())
main_gui_rus.py
from PyQt5.QtWidgets import QMainWindow, QApplication
# pyuic5 gui_rus.ui -o gui_rus.py
from gui_rus import Ui_MainWindow
class Window(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(Window, self).__init__(parent)
self.parent = parent
self.setupUi(self)
def closeEvent(self, event):
self.hide()
self.parent.show()
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
w = Window()
w.setWindowTitle("main_gui_rus.py")
w.show()
sys.exit(app.exec_())
main_eng_rus.py
from PyQt5.QtWidgets import (QMainWindow, QApplication, QPushButton,
QWidget, QGridLayout)
from main_gui_eng import Window as gui_eng
from main_gui_rus import Window as gui_rus
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
centralWidget = QWidget()
self.setCentralWidget(centralWidget)
self.button_eng = QPushButton('Open main_gui_eng.py')
self.button_eng.clicked.connect(self.open_gui_eng)
self.button_rus = QPushButton('Open main_gui_rus.py')
self.button_rus.clicked.connect(self.open_gui_rus)
self.grid = QGridLayout(centralWidget)
self.grid.addWidget(self.button_eng, 0, 0)
self.grid.addWidget(self.button_rus, 0, 1)
def open_gui_eng(self):
self.mainGuiEng = gui_eng(self)
self.mainGuiEng.show()
self.hide()
def open_gui_rus(self):
self.mainGuiRus = gui_rus(self)
self.mainGuiRus.show()
self.hide()
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
w = MainWindow()
w.setWindowTitle("main_eng_rus.py")
w.show()
sys.exit(app.exec_())
推荐阅读
- linux - 当数字相等时按数字排序但不按字母排序
- java - 为什么 System.err.println 卡在写?
- javascript - 无效的 Chai 属性:调用。您指的是 “all” 吗?
- influxdb - 如何在 InfluxDB 中指定连续查询的开始时间?
- c# - 使用 DB Contex(EF) 批量插入(少于 100 个实体)的最佳方法是什么?
- c# - 在控制台或 ASP.NET Core 中托管时如何在 Lib 中查找条目程序集
- excel-2010 - 带有表单的 Excel 宏快捷键
- php - PHP - 获取会话的先前值?
- php - php 应用程序/控制台原则:数据库:导入返回 OutOfMemoryException
- list - 模式匹配一些列表——不同的情况