Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 14, 2022 16:28:58

Novator
Зарегистрирован: 2021-03-22
Сообщения: 39
Репутация: +  0  -
Профиль   Отправить e-mail  

Qt импорт и работа с дизайном

Доброго времени суток!
Кто хочет покидать в меня камнями?
Объясните элементарное, я не могу понять…
Имеем такую структуру проекта:

Проект
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()
Как импортировать и дизайн и логику вместе?
Имеет ли смысл деление на файлы по модулям, или лучше писать в одном файле классами?
Отвечу на любые вопросы, ну или можно просто дружно посмеяться

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version