Найти - Пользователи
Полная версия: PyQt Привязка метода к кнопке
Начало » GUI » PyQt Привязка метода к кнопке
1
Hizako
Почему при нажатии на кнопку(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_())
vic57
Hizako
self.l.move(200,200)
self.l.show()
Hizako
vic57
Почему тогда если мы создаём надпись в методе initUI(), то нам не нужно это писать, а тут нужно? Мы ведь указываем родительский объект(self). Плюс при многократном нажатии на кнопку надпись накладывается друг на друга, это разве нормально?
FishHook
Hizako
Знаете, вообще это ненормально, когда в форме что-то появляется или исчезает. Элементы могут быть скрытыми по каким-то причинам, могут отображаться или скрываться, становиться недоступными для редактирования или наоборот, или могут изменяться в процессе, можно добавлять или убирать члены какого-то набора (например строки списка), но довалять что-то новое на форму по нажатию кнопки? Нет, скорее всего ваш ГУИ плохо спроектирован. Ну или приведите пример такого поведения.
vic57
Hizako
Почему тогда если мы создаём надпись в методе initUI(), то нам не нужно это писать, а тут нужно?
Hizako
self.btn.clicked.connect(self.createLayout)
self.show()
Плюс при многократном нажатии на кнопку надпись накладывается друг на друга, это разве нормально?
потому что каждый раз создаете новый объект.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB