1

Тема: ООП. Як подружити класи

Маю приклад програми із https://pythonworld.ru/gui/pyqt5-menustoolbars.html
Як пише автор: - це приклад з графічним інтерфейсом, з меню, тулбаром і статусбаром.


#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtWidgets import QMainWindow, QTextEdit, QAction, QApplication
from PyQt5.QtGui import QIcon


class Example(QMainWindow):

    def __init__(self):
        super().__init__()

        self.initUI()


    def initUI(self):

        textEdit = QTextEdit()
        self.setCentralWidget(textEdit)

        exitAction = QAction(QIcon('exit24.png'), 'Exit', self)
        exitAction.setShortcut('Ctrl+Q')
        exitAction.setStatusTip('Exit application')
        exitAction.triggered.connect(self.close)

        self.statusBar()

        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(exitAction)

        toolbar = self.addToolBar('Exit')
        toolbar.addAction(exitAction)

        self.setGeometry(300, 300, 350, 250)
        self.setWindowTitle('Main window')
        self.show()


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

Дійсно, все гарно працює і відображається. Та я зовсім не розумію, як в цю форму добавити, наприклад, кнопки, поля для введення тексту і т.п., якщо там потрібно використовувати уже class Example(QWidget):
Власне «подружити»  два класи  , а загалом, перший  скрипт з ось цим (з того ж таки сайту)


#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication
from PyQt5.QtCore import QCoreApplication


class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()


    def initUI(self):

        qbtn = QPushButton('Quit', self)
        qbtn.clicked.connect(QCoreApplication.instance().quit)
        qbtn.resize(qbtn.sizeHint())
        qbtn.move(50, 50)

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Quit button')
        self.show()


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

Ще прошу не давати мені стусанів, бо в мої 60 це вже трохи боляче і допоки справа не стосувалася ООП, все було навіть дуже файно, і питань не виникало, а ось тут спіткнувся.

Дякую щиро.

2

Re: ООП. Як подружити класи

А що власне не працює? Яка помилка?

Навчаюсь вчитись, щоб навчатись.

3

Re: ООП. Як подружити класи

Q-bart написав:

А що власне не працює? Яка помилка?

Шановний Q-bart, у тому то й справа, що помилки ніякої. Але коли я об'єдную ці програми в одну (так як я це собі уявляю - а розумію, що роблю це не правильно, тобто змінюю тільки ім'я класу другої частини коду - Example(), наприклад на Exa())  і тепер у мєму скрипті два класи, кожен із своїм кодом, то при старті бачу або форму з першої програми з менюшками, абож з другої з контролами:
...
...
...
app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


відображається одна форма, а

якщо ось так,
...
...
...
app = QApplication(sys.argv)
    ex = Exa()
    sys.exit(app.exec_())
то при запуску програми бачу форму з іншого класу.

Коротше кажучи: є зразок програми - форма з меню і статус баром, а на цю форму у мене не виходить добавити ще якісь інші єлементи, кнопки, чи поля вводу і т.п.

Вибачайте за плутане пояснення. Пів ночі просидів - штурмую ООП. Початківець я..

4

Re: ООП. Як подружити класи

Для початку код оберніть у відповідний тег (кніпочка code над редактором тексту для відправки повідомлень). Хотів допомогти, але боляче читати :)
Я розумію, що вчитися ніколи не пізно, але в 60 років Я би вже не хотів програмувати, лише попивати віскі із сигарою сидячи на ґанку свого будиночка біля моря. Цікавить ваша мотивація, а також яке підґрунтя у Вас уже є.

Мій блог про ОС сімейства *nix - http://nixtravelling.blogspot.com/

5

Re: ООП. Як подружити класи

Дякую, Master за бажання допомогти і пораду - буду розбиратися.
Мотивація дуже проста: - моєму синові 8 років. Він у другому класі і уже вчить інформатику, а я йому хочу допомогти ( у старших класах, звичайно) А ще я не п'ю і не палю, а будинок тільки почав будувати. 60 це не вік, як каже моя мама.
Ще раз дякую, мушу бігти на роботу. Зустрінемося. Хорошого дня.

Подякували: Master_Sergius, ReAl2

6

Re: ООП. Як подружити класи

А хіба зара в школах вчать Python? Як же Pascal? Але нехай, зацікавити до програмування досить легко Python-ом, правда важко потім щось написати на С++. В будь-якому випадку, якщо буде розуміння як воно все працює, то вже й допомагати не доведеться.

Мій блог про ОС сімейства *nix - http://nixtravelling.blogspot.com/

7

Re: ООП. Як подружити класи

Розібрався! Питання закрите.

Подякували: 0xDADA11C71