Главное окно
Класс QMainWindow представляет собой главное окно приложения. С его помощью можно создавать классический вид со строкой состояния, панелями инструментов и меню.
Строка состояния
Строка состояния это виджет, который используется для отображения статусной информации.
Чтобы создать строку состояния мы вызываем метод statusBar() класса QApplication. ShowMessage() показывает сообщение на строке состояния.
Меню
Меню это один из самых видных частей GUI приложения. Это группа команд расположенных в различных меню. Тогда как в консольных приложениях вам необходимо помнить все тайные команды, здесь вам доступно большинство команд сгруппированных логически. Это принятый стандарт, который уменьшает время на изучение нового приложения.
Во-первых, мы создаём меню c помощью метода menuBar() класса QMainWindow. Затем, используя метод addMenu(), добавляем пункт меню File, после чего подключаем объект exit к созданному пункту.
Панель инструментов
Меню объединяет все команды, которые мы можем использовать в приложении. Панели инструментов, в свою очередь, предоставляют быстрый доступ к наиболее часто употребляемым командам.
GUI приложения управляются командами, и эти команды могут быть запущены из меню, контекстного меню, панели инструментов или с помощью горячих клавиш. PyQt упрощает разработку с введением действий (actions). Объект action может иметь текст меню, иконку, ярлык (клавиатурное сочетание), статусный текст, текст «What's This?» и всплывающую подсказку. В нашем примере мы определим объект action с иконкой, ярлыком и всплывающей подсказкой.
Здесь мы соединяем сигнал triggered() объекта action с предопределённым сигналом close().
Создаём панель инструментов и устанавливаем на неё объект action.
![Панель инструментов](https://habrastorage.org/r/w780q1/getpro/habr/olpictures/06c/bf5/039/06cbf5039ebfd91ab38259fcfa9edad7.jpg)
Совмещаем вместе
В поседнем примере, мы создадим окно и расположим на нём меню, панель инструментов и статусную строку, а также добавим центральный виджет.
Здесь мы создаём виджет QtextEdit, который устанавливаем центральным на QMainWindow. Центральный виджет занимает все свободное пространство.
![mainwindow](https://habrastorage.org/r/w780q1/getpro/habr/olpictures/e1e/1ce/4e5/e1e1ce4e5468e839b8f05ad9220eb4f0.jpg)
Класс QMainWindow представляет собой главное окно приложения. С его помощью можно создавать классический вид со строкой состояния, панелями инструментов и меню.
Строка состояния
Строка состояния это виджет, который используется для отображения статусной информации.
#!/usr/bin/python
import sys
from PyQt4 import QtGui
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.resize(250, 150)
self.setWindowTitle('statusbar')
self.statusBar().showMessage('Ready')
app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
self.statusBar().showMessage('Ready')
Чтобы создать строку состояния мы вызываем метод statusBar() класса QApplication. ShowMessage() показывает сообщение на строке состояния.
Меню
Меню это один из самых видных частей GUI приложения. Это группа команд расположенных в различных меню. Тогда как в консольных приложениях вам необходимо помнить все тайные команды, здесь вам доступно большинство команд сгруппированных логически. Это принятый стандарт, который уменьшает время на изучение нового приложения.
#!/usr/bin/python
import sys
from PyQt4 import QtGui, QtCore
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.resize(250, 150)
self.setWindowTitle('menubar')
exit = QtGui.QAction(QtGui.QIcon('icons/exit.png'), 'Exit', self)
exit.setShortcut('Ctrl+Q')
exit.setStatusTip('Exit application')
self.connect(exit, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()'))
self.statusBar()
menubar = self.menuBar()
file = menubar.addMenu('&File')
file.addAction(exit)
app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
self.statusBar().showMessage('Ready')
Во-первых, мы создаём меню c помощью метода menuBar() класса QMainWindow. Затем, используя метод addMenu(), добавляем пункт меню File, после чего подключаем объект exit к созданному пункту.
Панель инструментов
Меню объединяет все команды, которые мы можем использовать в приложении. Панели инструментов, в свою очередь, предоставляют быстрый доступ к наиболее часто употребляемым командам.
#!/usr/bin/python
import sys
from PyQt4 import QtGui, QtCore
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.resize(250, 150)
self.setWindowTitle('toolbar')
self.exit = QtGui.QAction(QtGui.QIcon('icons/exit.png'), 'Exit', self)
self.exit.setShortcut('Ctrl+Q')
self.connect(self.exit, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()'))
self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(self.exit)
app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
self.exit = QtGui.QAction(QtGui.QIcon('icons/exit.png'), 'Exit', self)
self.exit.setShortcut('Ctrl+Q')
GUI приложения управляются командами, и эти команды могут быть запущены из меню, контекстного меню, панели инструментов или с помощью горячих клавиш. PyQt упрощает разработку с введением действий (actions). Объект action может иметь текст меню, иконку, ярлык (клавиатурное сочетание), статусный текст, текст «What's This?» и всплывающую подсказку. В нашем примере мы определим объект action с иконкой, ярлыком и всплывающей подсказкой.
self.connect(self.exit, QtCore.SIGNAL('triggered()'),
QtCore.SLOT('close()'))
Здесь мы соединяем сигнал triggered() объекта action с предопределённым сигналом close().
self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(self.exit)
Создаём панель инструментов и устанавливаем на неё объект action.
![Панель инструментов](https://habrastorage.org/getpro/habr/olpictures/06c/bf5/039/06cbf5039ebfd91ab38259fcfa9edad7.jpg)
Совмещаем вместе
В поседнем примере, мы создадим окно и расположим на нём меню, панель инструментов и статусную строку, а также добавим центральный виджет.
#!/usr/bin/python
import sys
from PyQt4 import QtGui, QtCore
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.resize(350, 250)
self.setWindowTitle('mainwindow')
textEdit = QtGui.QTextEdit()
self.setCentralWidget(textEdit)
exit = QtGui.QAction(QtGui.QIcon('icons/exit.png'), 'Exit', self)
exit.setShortcut('Ctrl+Q')
exit.setStatusTip('Exit application')
self.connect(exit, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()'))
self.statusBar()
menubar = self.menuBar()
file = menubar.addMenu('&File')
file.addAction(exit)
toolbar = self.addToolBar('Exit')
toolbar.addAction(exit)
app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(self.exit)
Здесь мы создаём виджет QtextEdit, который устанавливаем центральным на QMainWindow. Центральный виджет занимает все свободное пространство.
![mainwindow](https://habrastorage.org/getpro/habr/olpictures/e1e/1ce/4e5/e1e1ce4e5468e839b8f05ad9220eb4f0.jpg)