Как я могу использовать функции 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 (), но не уверен, как это работает. Не мог найти о нем много.