<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # PyQt5 中的菜單和工具欄 > 原文: [http://zetcode.com/gui/pyqt5/menustoolbars/](http://zetcode.com/gui/pyqt5/menustoolbars/) 在 PyQt5 教程的這一部分中,我們創建一個狀態欄,菜單欄和工具欄。 菜單是位于菜單欄中的一組命令。 工具欄上的按鈕帶有應用中的一些常用命令。 狀態欄通常在應用窗口的底部顯示狀態信息。 ## `QMainWindow` `QMainWindow`類提供一個主應用窗口。 這樣可以創建帶有狀態欄,工具欄和菜單欄的經典應用框架。 ## 狀態欄 狀態欄是用于顯示狀態信息的小部件。 `statusbar.py` ```py #!/usr/bin/python3 # -*- coding: utf-8 -*- """ ZetCode PyQt5 tutorial This program creates a statusbar. Author: Jan Bodnar Website: zetcode.com Last edited: August 2017 """ import sys from PyQt5.QtWidgets import QMainWindow, QApplication class Example(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.statusBar().showMessage('Ready') self.setGeometry(300, 300, 250, 150) self.setWindowTitle('Statusbar') self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) ``` 狀態欄是在`QMainWindow`小部件的幫助下創建的。 ```py self.statusBar().showMessage('Ready') ``` 要獲取狀態欄,我們調用`QtGui.QMainWindow`類的`statusBar()`方法。 該方法的第一次調用將創建一個狀態欄。 后續調用返回狀態欄對象。 `showMessage()`在狀態欄上顯示一條消息。 ## 簡單菜單 菜單欄是 GUI 應用的常見部分。 它是位于各個菜單中的一組命令。 (Mac OS 對菜單欄的處理不同。要獲得相似的結果,我們可以添加以下行:`menubar.setNativeMenuBar(False)`。) `simplemenu.py` ```py #!/usr/bin/python3 # -*- coding: utf-8 -*- """ ZetCode PyQt5 tutorial This program creates a menubar. The menubar has one menu with an exit action. Author: Jan Bodnar Website: zetcode.com Last edited: January 2017 """ import sys from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication from PyQt5.QtGui import QIcon class Example(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): exitAct = QAction(QIcon('exit.png'), '&Exit', self) exitAct.setShortcut('Ctrl+Q') exitAct.setStatusTip('Exit application') exitAct.triggered.connect(qApp.quit) self.statusBar() menubar = self.menuBar() fileMenu = menubar.addMenu('&File') fileMenu.addAction(exitAct) self.setGeometry(300, 300, 300, 200) self.setWindowTitle('Simple menu') self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) ``` 在上面的示例中,我們創建一個帶有一個菜單的菜單欄。 該菜單將包含一個動作,如果選中該動作,它將終止應用。 也會創建一個狀態欄。 可通過 `Ctrl + Q` 快捷方式訪問該操作。 ```py exitAct = QAction(QIcon('exit.png'), '&Exit', self) exitAct.setShortcut('Ctrl+Q') exitAct.setStatusTip('Exit application') ``` `QAction`是使用菜單欄,工具欄或自定義鍵盤快捷鍵執行的操作的抽象。 在以上三行中,我們創建一個帶有特定圖標和“退出”標簽的動作。 此外,為此操作定義了快捷方式。 第三行創建一個狀態提示,當我們將鼠標指針懸停在菜單項上時,狀態提示將顯示在狀態欄中。 ```py exitAct.triggered.connect(qApp.quit) ``` 當我們選擇此特定動作時,將觸發信號。 信號連接到`QApplication`小部件的`quit()`方法。 這將終止應用。 ```py menubar = self.menuBar() fileMenu = menubar.addMenu('&File') fileMenu.addAction(exitAction) ``` `menuBar()`方法創建一個菜單欄。 我們使用`addMenu()`創建文件菜單,并使用`addAction()`添加操作。 ## 子菜單 子菜單是位于另一個菜單內的菜單。 `submenu.py` ```py #!/usr/bin/python3 # -*- coding: utf-8 -*- """ ZetCode PyQt5 tutorial This program creates a submenu. Author: Jan Bodnar Website: zetcode.com Last edited: August 2017 """ import sys from PyQt5.QtWidgets import QMainWindow, QAction, QMenu, QApplication class Example(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): menubar = self.menuBar() fileMenu = menubar.addMenu('File') impMenu = QMenu('Import', self) impAct = QAction('Import mail', self) impMenu.addAction(impAct) newAct = QAction('New', self) fileMenu.addAction(newAct) fileMenu.addMenu(impMenu) self.setGeometry(300, 300, 300, 200) self.setWindowTitle('Submenu') self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) ``` 在示例中,我們有兩個菜單項; 一個位于“文件”菜單中,另一個位于“文件的導入”子菜單中。 ```py impMenu = QMenu('Import', self) ``` 使用`QMenu`創建新菜單。 ```py impAct = QAction('Import mail', self) impMenu.addAction(impAct) ``` 使用`addAction()`將操作添加到子菜單。 ![Submenu](https://img.kancloud.cn/75/0f/750fba2a979a439cf58fcb296f4dc40d_302x225.jpg) 圖:子菜單 ## 復選菜單 在以下示例中,我們創建一個可以選中和取消選中的菜單。 `checkmenu.py` ```py #!/usr/bin/python3 # -*- coding: utf-8 -*- """ ZetCode PyQt5 tutorial This program creates a checkable menu. Author: Jan Bodnar Website: zetcode.com Last edited: August 2017 """ import sys from PyQt5.QtWidgets import QMainWindow, QAction, QApplication class Example(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.statusbar = self.statusBar() self.statusbar.showMessage('Ready') menubar = self.menuBar() viewMenu = menubar.addMenu('View') viewStatAct = QAction('View statusbar', self, checkable=True) viewStatAct.setStatusTip('View statusbar') viewStatAct.setChecked(True) viewStatAct.triggered.connect(self.toggleMenu) viewMenu.addAction(viewStatAct) self.setGeometry(300, 300, 300, 200) self.setWindowTitle('Check menu') self.show() def toggleMenu(self, state): if state: self.statusbar.show() else: self.statusbar.hide() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) ``` 該代碼示例使用一個動作創建一個視圖菜單。 該操作顯示或隱藏狀態欄。 當狀態欄可見時,將選中菜單項。 ```py viewStatAct = QAction('View statusbar', self, checkable=True) ``` 使用`checkable`選項,我們創建一個復選菜單。 ```py viewStatAct.setChecked(True) ``` 由于狀態欄從一開始就可見,因此我們使用`setChecked()`方法檢查操作。 ```py def toggleMenu(self, state): if state: self.statusbar.show() else: self.statusbar.hide() ``` 根據操作的狀態,我們顯示或隱藏狀態欄。 ![Check menu](https://img.kancloud.cn/1c/06/1c06161e8fc87a08c3b017524957fb76_302x225.jpg) 圖:復現菜單 ## 上下文菜單 上下文菜單,也稱為彈出菜單,是在某些上下文下顯示的命令列表。 例如,在 Opera Web 瀏覽器中,當我們右鍵單擊某個網頁時,將獲得一個上下文菜單。 在這里,我們可以重新加載頁面,返回頁面或查看頁面源。 如果右鍵單擊工具欄,則將獲得另一個用于管理工具欄的上下文菜單。 `contextmenu.py` ```py #!/usr/bin/python3 # -*- coding: utf-8 -*- """ ZetCode PyQt5 tutorial This program creates a context menu. Author: Jan Bodnar Website: zetcode.com Last edited: August 2017 """ import sys from PyQt5.QtWidgets import QMainWindow, qApp, QMenu, QApplication class Example(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setGeometry(300, 300, 300, 200) self.setWindowTitle('Context menu') self.show() def contextMenuEvent(self, event): cmenu = QMenu(self) newAct = cmenu.addAction("New") opnAct = cmenu.addAction("Open") quitAct = cmenu.addAction("Quit") action = cmenu.exec_(self.mapToGlobal(event.pos())) if action == quitAct: qApp.quit() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) ``` 要使用上下文菜單,我們必須重新實現`contextMenuEvent()`方法。 ```py action = cmenu.exec_(self.mapToGlobal(event.pos())) ``` 使用`exec_()`方法顯示上下文菜單。 從事件對象獲取鼠標指針的坐標。 `mapToGlobal()`方法將微件坐標轉換為全局屏幕坐標。 ```py if action == quitAct: qApp.quit() ``` 如果從上下文菜單返回的操作等于退出操作,則我們終止該應用。 ## 工具欄 菜單將我們可以在應用中使用的所有命令分組。 使用工具欄可以快速訪問最常用的命令。 `toolbar.py` ```py #!/usr/bin/python3 # -*- coding: utf-8 -*- """ ZetCode PyQt5 tutorial This program creates a toolbar. The toolbar has one action, which terminates the application, if triggered. Author: Jan Bodnar Website: zetcode.com Last edited: August 2017 """ import sys from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication from PyQt5.QtGui import QIcon class Example(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): exitAct = QAction(QIcon('exit24.png'), 'Exit', self) exitAct.setShortcut('Ctrl+Q') exitAct.triggered.connect(qApp.quit) self.toolbar = self.addToolBar('Exit') self.toolbar.addAction(exitAct) self.setGeometry(300, 300, 300, 200) self.setWindowTitle('Toolbar') self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) ``` 在上面的示例中,我們創建了一個簡單的工具欄。 工具欄上有一個工具動作,一個退出動作,在觸發時會終止應用。 ```py exitAct = QAction(QIcon('exit24.png'), 'Exit', self) exitAct.setShortcut('Ctrl+Q') exitAct.triggered.connect(qApp.quit) ``` 與上面的菜單欄示例類似,我們創建一個動作對象。 該對象具有標簽,圖標和快捷方式。 `QtGui.QMainWindow`的`quit()`方法連接到觸發信號。 ```py self.toolbar = self.addToolBar('Exit') self.toolbar.addAction(exitAction) ``` 工具欄是使用`addToolBar()`方法創建的。 我們使用`addAction()`將動作對象添加到工具欄。 ![Toolbar](https://img.kancloud.cn/a4/9e/a49e3047cd01cb53f561fef038f1a698_302x226.jpg) 圖:工具欄 ## 把它放在一起 在本節的最后一個示例中,我們將創建一個菜單欄,工具欄和一個狀態欄。 我們還將創建一個中央小部件。 `mainwindow.py` ```py #!/usr/bin/python3 # -*- coding: utf-8 -*- """ ZetCode PyQt5 tutorial This program creates a skeleton of a classic GUI application with a menubar, toolbar, statusbar, and a central widget. Author: Jan Bodnar Website: zetcode.com Last edited: August 2017 """ import sys from PyQt5.QtWidgets import QMainWindow, QTextEdit, QAction, QApplication from PyQt5.QtGui import QIcon class Example(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): textEdit = QTextEdit() self.setCentralWidget(textEdit) exitAct = QAction(QIcon('exit24.png'), 'Exit', self) exitAct.setShortcut('Ctrl+Q') exitAct.setStatusTip('Exit application') exitAct.triggered.connect(self.close) self.statusBar() menubar = self.menuBar() fileMenu = menubar.addMenu('&File') fileMenu.addAction(exitAct) toolbar = self.addToolBar('Exit') toolbar.addAction(exitAct) self.setGeometry(300, 300, 350, 250) self.setWindowTitle('Main window') self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) ``` 此代碼示例使用菜單欄,工具欄和狀態欄創建經典 GUI 應用的框架。 ```py textEdit = QTextEdit() self.setCentralWidget(textEdit) ``` 在這里,我們創建一個文本編輯小部件。 我們將其設置為`QMainWindow`的中央小部件。 中央窗口小部件將占據剩余的所有空間。 ![Main window](https://img.kancloud.cn/ea/63/ea6325c3b1a7568ac3b40cf2a395a42e_432x353.jpg) 圖:主窗口 在 PyQt5 教程的這一部分中,我們使用了菜單,工具欄,狀態欄和主應用窗口。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看