Форум сайта python.su
Почему при нажатии на кнопку(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)
Офлайн
Hizako
self.l.move(200,200)
self.l.show()
Офлайн
vic57
Почему тогда если мы создаём надпись в методе initUI(), то нам не нужно это писать, а тут нужно? Мы ведь указываем родительский объект(self). Плюс при многократном нажатии на кнопку надпись накладывается друг на друга, это разве нормально?
Офлайн
Hizako
Знаете, вообще это ненормально, когда в форме что-то появляется или исчезает. Элементы могут быть скрытыми по каким-то причинам, могут отображаться или скрываться, становиться недоступными для редактирования или наоборот, или могут изменяться в процессе, можно добавлять или убирать члены какого-то набора (например строки списка), но довалять что-то новое на форму по нажатию кнопки? Нет, скорее всего ваш ГУИ плохо спроектирован. Ну или приведите пример такого поведения.
Офлайн
Hizako
Почему тогда если мы создаём надпись в методе initUI(), то нам не нужно это писать, а тут нужно?
Hizako
self.btn.clicked.connect(self.createLayout)
self.show()
Плюс при многократном нажатии на кнопку надпись накладывается друг на друга, это разве нормально?потому что каждый раз создаете новый объект.
Отредактировано vic57 (Март 5, 2017 13:53:53)
Офлайн