Кто хочет покидать в меня камнями?
Объясните элементарное, я не могу понять…
Имеем такую структуру проекта:
ПроектГде:
Config
—-conf.ini
resources
module_sale
—-__init__.py
—-sale.py
—-sale_design.py
venv
main.py
mainform_design.py
resource_rc.py
main.py - главный файл
mainform_design.py - дизайн формы, созданный в дизайнере и переконвертированный
sale.py - функции сторонней формы
sale_design.py - дизайн сторонней формы
Главный файл main.py имеет вид (лишнее вырезал):
import sys # sys нужен для передачи argv в QApplication from configparser import ConfigParser from PyQt5 import QtWidgets from PyQt5.QtWidgets import QLabel, QMessageBox, QProgressBar, QTableWidgetItem from PyQt5.QtGui import QPixmap, QIcon import mainform_design from module_sale import sale_design from module_sale import sale # Переменные глобальные conf: ConfigParser = ConfigParser() conf.read('config/conf.ini') folder = conf.get('Settings', 'Folder') filters = conf.get('Settings', 'Filter') sql_file = conf.get('Settings', 'SQL File') sum_ini = conf.get('Settings', 'Sum') limit = conf.get('Settings', 'Limit') conf_sum = ConfigParser() conf_sum.read(sum_ini) # Главный класс class MainForm(QtWidgets.QMainWindow, mainform_design.Ui_MainWindow): # Инициализация окна и обработчики событий def __init__(self): # Это здесь нужно для доступа к переменным, методам # и т.д. в файле design.py super().__init__() self.setupUi(self) self.sales = SaleDialogImport(self) self.start() self.btn_Shop.clicked.connect(self.sales.show_sale_dialog) # тут происходит вызов сторонней формы # Процедура отображения запроса при выходе с программы def closeEvent(self, event): reply = QMessageBox.question(self, 'Выход', "Как, уже уходите?", QMessageBox.Yes, QMessageBox.No) if reply == QMessageBox.Yes: event.accept() else: event.ignore() # Процедура, выполняющаяся при старте и устанавливающая контролам свойства def start(self): self.btn_Parce.setEnabled(False) self.btn_Finalize.setEnabled(False) self.btn_Save.setEnabled(False) self.tabs.setCurrentIndex(0) self.lbl_countline.hide() self.lbl_validline.hide() self.lbl_checked.hide() self.lbl_progres.hide() self.pr_progres.hide() class SaleDialogImport (QtWidgets.QMainWindow, sale_design.Ui_shop): def __init__(self, parent=None): super(SaleDialogImport, self).__init__(parent) self.setupUi(self) self.parent = parent self.sal = sale.SaleDialog() def show_sale_dialog(self): self.show() self.sal.filter_type() self.sal.yahr_sort() if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) window = MainForm() window.show() sys.exit(app.exec_())
Вопрос собственно в том, почему при импорте не работают функции:
self.sal.filter_type()
self.sal.yahr_sort()
Как импортировать и дизайн и логику вместе?
Имеет ли смысл деление на файлы по модулям, или лучше писать в одном файле классами?
Отвечу на любые вопросы, ну или можно просто дружно посмеяться