@savzaycev

Как отобразить новый виджет после нажатия на пункт из меню?

Здравствуйте, уважаемые пользователи Хабра! Решил написать простенькую "рисовалку", но возникла проблема: не могу реализовать работу одного из пунктов меню ('Создать'). При нажатии на пункт меню должен появляться холст (объект: Pixmap( ) белого цвета).
Мысли: может проблема в том, что функция, а соответственно и переменная, ссылающаяся на наш объект Pixmap сразу же "умирает"?

Заранее огромное спасибо Всем, кто отозвался!

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *

class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.initUI()

    def initUI(self):
        self.resize(1200, 700)
        self.setFixedSize(self.width(), self.height())
        self.setWindowTitle('Paint')
        self.setWindowIcon(QIcon('icon.png'))
        self.mainMenu()

    def getNewFileName(self):
        text, ok = QInputDialog.getText(self, 'Создать', 'Введите имя файла:')

        if ok:
            self.le = QLineEdit(self)
            self.le.setText(str(text))
            return 'NewFile' if len(self.le.text()) == 0 else self.le.setText()

    def newFileWindow(self):
        self.setWindowTitle(self.getNewFileName())
        # self.pix = QPixmap(400, 400)
        # self.pix.fill(Qt.White)
        # self.update()


    def mainMenu(self):
        menuBar = self.menuBar()


        fileMenu = menuBar.addMenu('Файл')

        newFileAction = QAction('Создать', self)
        fileMenu.addAction(newFileAction)
        newFileAction.setShortcut('Ctrl+N')
        newFileAction.triggered.connect(self.newFileWindow)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())
  • Вопрос задан
  • 38 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Я не работал с PyQT, но предложу догадку: ты создал новый объект QPixmap(), а как о нём узнает твоё окно, точнее, его родитель QMainWindow?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы