Member 12911699 Ответов: 0

Как я могу использовать функции QMainWindow и сетки qgridlayout в то же время в pyqt5?


Привет,
В настоящее время я изучаю python, пытаясь создать графический интерфейс с помощью PyQt5, и у меня это не очень хорошо получается. Поэтому я пошел и начал проходить уроки в PyQt5 учебник, - Изучайте программирование GUI с PyQt5[^] и начал комбинировать некоторые разделы кода, чтобы лучше понять его.

Затем я добрался до раздела управления макетом и столкнулся с проблемой невозможности использовать QGridLayout и QStatusBar одновременно. Я где-то видел, что это можно решить с помощью setCentralWidget (), но я не мог понять, как его использовать, и ничего не мог найти в интернете.

Что я уже пробовал:

вот что у меня есть до сих пор. Идея состоит в том, чтобы заставить программу сообщить вам, какую кнопку Вы нажали в строке состояния.

import sys
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication, QGridLayout

class Problem(QWidget):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        grid = QGridLayout()
        grid.setSpacing(10)


        names = [['Cls', 'Bck', '', 'Close'],
                 ['7', '8', '9', '/'],
                 ['4', '5', '6', '*'],
                 ['1', '2', '3', '-'],
                 ['0', '.', '=', '+']]
        row_num = 0
        column_num = 0
        for row in names :
            row_num += 1
            column_num = 0
            for column in row:
                column_num += 1
                button = QPushButton(column)
                grid.addWidget(button, row_num,column_num)
#                button.clicked.connect(self.buttonClicked)

#            self.statusBar()
            self.setLayout(grid)


            self.setGeometry(300,300,290,150)
            self.setWindowTitle("not working")
            self.show()

    #def buttonClicked(self):

#        sender = self.sender()
#        self.statusBar().showMessage(sender.text() + ' was pressed')






if __name__ == '__ma<pre>
в__':
app = QApplication(sys. argv)
ex = проблема()
sys. exit(app. exec_())

Код, как он есть, должен создавать окно с калькулятором, как макет. Уберите комментарии и я получу ошибку
"Problem" has no attribute "statusBar"

Я слышал, что могу использовать setCentralWidget (), но не уверен, как это работает. Не мог найти о нем много.

0 Ответов