Уведомления

Группа в Telegram: @pythonsu

#1 Март 4, 2017 22:02:47

Hizako
Зарегистрирован: 2017-03-04
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt Привязка метода к кнопке

Почему при нажатии на кнопку(self.btn) меняется название окна(self.setWindowTitle('kekos'), но не добавляется надпись (self.l) ?

 import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QPushButton, QLabel,QVBoxLayout, QMessageBox, QApplication
from PyQt5.QtGui import QIcon
class Window(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        self.resize(300,300)
        self.menu=self.menuBar()
        fileMenu=self.menu.addMenu('File')
        exitAction=QAction(QIcon('aska_suck'), 'Exit', self)
        exitAction.triggered.connect(qApp.exit)
        fileMenu.addAction(exitAction)
        self.btn=QPushButton('kekos', self)
        self.btn.resize(self.btn.sizeHint())
        self.btn.move(150,150)
        self.btn.clicked.connect(self.createLayout)
        self.show()
    def createLayout(self):
        self.setWindowTitle('kekos')
        self.l=QLabel('kekos',self)
        self.l.move(200,200)
    def closeEvent(self, event):
        choice=QMessageBox.question(self,'kekos','vihod?',QMessageBox.Yes,QMessageBox.No)
        if choice==QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()
app=QApplication(sys.argv)
w=Window()
sys.exit(app.exec_())

Отредактировано Hizako (Март 5, 2017 12:02:51)

Офлайн

#2 Март 5, 2017 12:35:13

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

PyQt Привязка метода к кнопке

Hizako
self.l.move(200,200)
self.l.show()

Офлайн

#3 Март 5, 2017 13:22:38

Hizako
Зарегистрирован: 2017-03-04
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt Привязка метода к кнопке

vic57
Почему тогда если мы создаём надпись в методе initUI(), то нам не нужно это писать, а тут нужно? Мы ведь указываем родительский объект(self). Плюс при многократном нажатии на кнопку надпись накладывается друг на друга, это разве нормально?

Офлайн

#4 Март 5, 2017 13:30:07

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

PyQt Привязка метода к кнопке

Hizako
Знаете, вообще это ненормально, когда в форме что-то появляется или исчезает. Элементы могут быть скрытыми по каким-то причинам, могут отображаться или скрываться, становиться недоступными для редактирования или наоборот, или могут изменяться в процессе, можно добавлять или убирать члены какого-то набора (например строки списка), но довалять что-то новое на форму по нажатию кнопки? Нет, скорее всего ваш ГУИ плохо спроектирован. Ну или приведите пример такого поведения.



Офлайн

#5 Март 5, 2017 13:49:39

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

PyQt Привязка метода к кнопке

Hizako
Почему тогда если мы создаём надпись в методе initUI(), то нам не нужно это писать, а тут нужно?
Hizako
self.btn.clicked.connect(self.createLayout)
self.show()
Плюс при многократном нажатии на кнопку надпись накладывается друг на друга, это разве нормально?
потому что каждый раз создаете новый объект.

Отредактировано vic57 (Март 5, 2017 13:53:53)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version