Новичок
Профиль
Группа: Участник
Сообщений: 1
Регистрация: 27.3.2017
Репутация: нет Всего: нет
|
Доброе время суток. Разбираюсь в Python и попутно в PyQt. Вот уже несколько дней бьюсь головой об стену, не получается работать с несколькими формами(классами). Суть вопроса: есть форма, описанная одним классом. На ней создал кнопку, при нажатии на которую должно открыться окно с иной формой. Вот тут и загвоздка. Итак, есть у меня три файла. Первый (основной) main_UI_Form.py Код | from PyQt4 import QtCore, QtGui import sys import ui_form import xlrd
class ExampleApp(QtGui.QMainWindow, ui_form.Ui_MainWindow): def __init__(self, parent=None): super(ExampleApp, self).__init__(parent) self.setupUi(self)
def main(): app = QtGui.QApplication(sys.argv) form = ExampleApp() form.show() app.exec_()
if __name__ == '__main__': main()
|
Второй (модель основной формы, создавался в Designer и далее редактировался) ui_form.py Код | # -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'ui_form.ui' # # Created by: PyQt4 UI code generator 4.11.4 # # WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui import xlrd
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_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName(_fromUtf8("Aerodynamic Performance")) MainWindow.resize(800, 600) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(_fromUtf8("PNG/icon.ico")), QtGui.QIcon.Normal, QtGui.QIcon.Off) MainWindow.setWindowIcon(icon) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName(_fromUtf8("centralwidget")) self.gridLayout_2 = QtGui.QGridLayout(self.centralwidget) self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2")) self.tabWidget = QtGui.QTabWidget(self.centralwidget) self.tabWidget.setObjectName(_fromUtf8("tabWidget")) self.tab_1 = QtGui.QWidget() self.tab_1.setObjectName(_fromUtf8("tab_1")) icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap(_fromUtf8("PNG/tab_1.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.tabWidget.addTab(self.tab_1, icon1, _fromUtf8("")) self.tab_2 = QtGui.QWidget() self.tab_2.setObjectName(_fromUtf8("tab_2")) icon2 = QtGui.QIcon() icon2.addPixmap(QtGui.QPixmap(_fromUtf8("PNG/tab_2.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.tabWidget.addTab(self.tab_2, icon2, _fromUtf8("")) self.tab_3 = QtGui.QWidget() self.tab_3.setObjectName(_fromUtf8("tab_3")) icon3 = QtGui.QIcon() icon3.addPixmap(QtGui.QPixmap(_fromUtf8("PNG/tab_3.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.tabWidget.addTab(self.tab_3, icon3, _fromUtf8("")) self.tab_4 = QtGui.QWidget() self.tab_4.setObjectName(_fromUtf8("tab_4")) icon4 = QtGui.QIcon() icon4.addPixmap(QtGui.QPixmap(_fromUtf8("PNG/tab_4.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.tabWidget.addTab(self.tab_4, icon4, _fromUtf8("")) self.tab_5 = QtGui.QWidget() self.tab_5.setObjectName(_fromUtf8("tab_5")) icon5 = QtGui.QIcon() icon5.addPixmap(QtGui.QPixmap(_fromUtf8("PNG/tab_5.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.tabWidget.addTab(self.tab_5, icon5, _fromUtf8("")) self.gridLayout_2.addWidget(self.tabWidget, 0, 0, 1, 1) self.gridLayout = QtGui.QGridLayout() self.gridLayout.setObjectName(_fromUtf8("gridLayout")) self.gridLayout_2.addLayout(self.gridLayout, 1, 1, 1, 1) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21)) self.menubar.setObjectName(_fromUtf8("menubar")) self.menuFile = QtGui.QMenu(self.menubar) self.menuFile.setObjectName(_fromUtf8("menuFile")) self.menuHelp = QtGui.QMenu(self.menubar) self.menuHelp.setObjectName(_fromUtf8("menuHelp")) MainWindow.setMenuBar(self.menubar) self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar.setObjectName(_fromUtf8("statusbar")) MainWindow.setStatusBar(self.statusbar) self.actionQuit = QtGui.QAction(MainWindow) icon6 = QtGui.QIcon() icon6.addPixmap(QtGui.QPixmap(_fromUtf8("PNG/exit.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionQuit.setIcon(icon6) self.actionQuit.setObjectName(_fromUtf8("actionQuit")) self.actionAbout = QtGui.QAction(MainWindow) icon7 = QtGui.QIcon() icon7.addPixmap(QtGui.QPixmap(_fromUtf8("PNG/info.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionAbout.setIcon(icon7) self.actionAbout.setObjectName(_fromUtf8("actionAbout")) self.menuFile.addAction(self.actionQuit) self.menuHelp.addAction(self.actionAbout) self.menubar.addAction(self.menuFile.menuAction()) self.menubar.addAction(self.menuHelp.menuAction())
self.connect(self.actionQuit, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()'))
self.connect(self.actionAbout, QtCore.SIGNAL('triggered()'), self.aboutApp)
self.Vlayout_tab3 = QtGui.QVBoxLayout(self.tab_3) self.Vlayout_tab3.addStretch(1)
self.OpenFile_btn = QtGui.QPushButton('Открыть файл') self.OpenFile_btn.clicked.connect(self.OpenFile) self.Vlayout_tab3.addWidget(self.OpenFile_btn) self.SelectValues_btn = QtGui.QPushButton('Выбрать значения') self.SelectValues_btn.setEnabled(False) self.Vlayout_tab3.addWidget(self.SelectValues_btn) self.SelectValues_btn.clicked.connect(self.BlockSelection)
self.retranslateUi(MainWindow) self.tabWidget.setCurrentIndex(0) QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(_translate("Aerodynamic Performance", "Aerodynamic Performance", None)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_1), _translate("Aerodynamic Performance", "Главная", None)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("Aerodynamic Performance", "Синтаксис", None)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("Aerodynamic Performance", "Исходные данные", None)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), _translate("Aerodynamic Performance", "Построение графиков", None)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_5), _translate("Aerodynamic Performance", "Производные и средне интегральные АДХ", None)) self.menuFile.setTitle(_translate("Aerodynamic Performance", "File", None)) self.menuHelp.setTitle(_translate("Aerodynamic Performance", "Help", None)) self.actionQuit.setText(_translate("Aerodynamic Performance", "Quit", None)) self.actionQuit.setStatusTip(_translate("Aerodynamic Performance", "Выход", None)) self.actionAbout.setText(_translate("Aerodynamic Performance", "About", None)) self.actionAbout.setStatusTip(_translate("Aerodynamic Performance", "О программе", None))
def aboutApp(self): website = "http://google.com" email = "[email protected]" license_link = "NA" license_name = "FREEWARE" msgBox = QtGui.QMessageBox() msgBox.setWindowTitle(self.tr("About ... ")) msgBox.setTextFormat(QtCore.Qt.RichText) #msgBox.setIconPixmap(QtGui.QPixmap(ComicTaggerSettings.getGraphic('about.png'))) msgBox.setWindowIcon(QtGui.QIcon('PNG/icon.ico')) # иконка msgBox.setText("<br><br><br>" + "©2017 Petr Radchenko<br><br>" + "<a href='{0}'>{0}</a><br><br>".format(website) + "<a href='mailto:{0}'>{0}</a><br><br>".format(email) + "License: <a href='{0}'>{1}</a>".format(license_link, license_name)) msgBox.setStandardButtons(QtGui.QMessageBox.Ok)
msgBox.exec_()
def OpenFile(self): global filename filename = QtGui.QFileDialog.getOpenFileName(self, "Открыть файл", '/home') read_xls_file = xlrd.open_workbook(filename) sheet = read_xls_file.sheet_by_index(0) print('Загружен файл', filename) self.SelectValues_btn.setEnabled(True)
def BlockSelection(self): pass
|
И Третий (дочернее диалоговое окно) selection_form.py Код | # -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'Selection_form.ui' # # Created by: PyQt4 UI code generator 4.11.4 # # WARNING! All changes made in this file will be lost!
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_SelectDialog(object): def select_setupUi(self, SelectDialog): SelectDialog.setObjectName(_fromUtf8("SelectDialog")) SelectDialog.resize(955, 789) self.Selection_btnBox = QtGui.QDialogButtonBox(SelectDialog) self.Selection_btnBox.setGeometry(QtCore.QRect(590, 750, 341, 32)) self.Selection_btnBox.setOrientation(QtCore.Qt.Horizontal) self.Selection_btnBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok) self.Selection_btnBox.setObjectName(_fromUtf8("Selection_btnBox")) self.checkBox_5 = QtGui.QCheckBox(SelectDialog) self.checkBox_5.setGeometry(QtCore.QRect(250, 80, 91, 17)) self.checkBox_5.setObjectName(_fromUtf8("checkBox_5")) self.checkBox_6 = QtGui.QCheckBox(SelectDialog) self.checkBox_6.setGeometry(QtCore.QRect(150, 80, 91, 17)) self.checkBox_6.setObjectName(_fromUtf8("checkBox_6")) self.checkBox_7 = QtGui.QCheckBox(SelectDialog) self.checkBox_7.setGeometry(QtCore.QRect(60, 80, 91, 17)) self.checkBox_7.setObjectName(_fromUtf8("checkBox_7")) self.checkBox_8 = QtGui.QCheckBox(SelectDialog) self.checkBox_8.setGeometry(QtCore.QRect(250, 100, 91, 17)) self.checkBox_8.setObjectName(_fromUtf8("checkBox_8")) self.checkBox_9 = QtGui.QCheckBox(SelectDialog) self.checkBox_9.setGeometry(QtCore.QRect(150, 100, 91, 17)) self.checkBox_9.setObjectName(_fromUtf8("checkBox_9")) ... #Очень много чекбоксов, сократил код... ... self.checkBox_162 = QtGui.QCheckBox(SelectDialog) self.checkBox_162.setGeometry(QtCore.QRect(470, 680, 101, 17)) self.checkBox_162.setObjectName(_fromUtf8("checkBox_162")) self.label = QtGui.QLabel(SelectDialog) self.label.setGeometry(QtCore.QRect(380, 80, 281, 31)) self.label.setObjectName(_fromUtf8("label")) self.checkBox = QtGui.QCheckBox(SelectDialog) self.checkBox.setGeometry(QtCore.QRect(60, 140, 91, 17)) self.checkBox.setObjectName(_fromUtf8("checkBox")) self.checkBox_2 = QtGui.QCheckBox(SelectDialog) self.checkBox_2.setGeometry(QtCore.QRect(250, 140, 91, 17)) self.checkBox_2.setObjectName(_fromUtf8("checkBox_2")) self.checkBox_3 = QtGui.QCheckBox(SelectDialog) self.checkBox_3.setGeometry(QtCore.QRect(150, 140, 91, 17)) self.checkBox_3.setObjectName(_fromUtf8("checkBox_3"))
self.retranslateUi(SelectDialog) QtCore.QObject.connect(self.Selection_btnBox, QtCore.SIGNAL(_fromUtf8("rejected()")), SelectDialog.reject) QtCore.QMetaObject.connectSlotsByName(SelectDialog)
def retranslateUi(self, SelectDialog): SelectDialog.setWindowTitle(_translate("SelectDialog", "Выберите блоки значений", None)) self.checkBox_5.setText(_translate("SelectDialog", "Cz (D-0 G-90)", None)) self.checkBox_6.setText(_translate("SelectDialog", "Cz (D-0 G-45)", None)) self.checkBox_7.setText(_translate("SelectDialog", "Cz (D-0 G-0)", None)) self.checkBox_8.setText(_translate("SelectDialog", "Mx (D-0 G-90)", None)) self.checkBox_9.setText(_translate("SelectDialog", "Mx (D-0 G-45)", None))
|
Помогите, пожалуйста, подключить вторую форму. Эта тема, вероятно, не раз уже поднималась, по сему не серчайте и не кидайтесь в новичка туториалами. Заранее признателен за помощь. UPDATE: вопрос решил сам, всем спасибо) Это сообщение отредактировал(а) etopieto - 28.3.2017, 18:06
|