欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

對PyQt5中的菜單欄和工具欄實例詳解

 更新時間:2019年06月20日 22:50:51   作者:天堂1223  
今天小編就為大家分享一篇對PyQt5中的菜單欄和工具欄實例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

在這一部分,我們學習創(chuàng)建狀態(tài)欄,菜單欄和工具欄。一個菜單是位于菜單欄的一組命令。一個工具欄有一些按鈕,這些按鈕在應用程序中擁有一些常用命令。狀態(tài)欄顯示狀態(tài)信息,通常位于應用窗口下方。

QMainWindow

QMainWindow類提供了一個主應用窗口。這允許我們創(chuàng)建一個帶有狀態(tài)欄,工具欄和菜單欄的經典程序框架。

Statusbar(狀態(tài)欄)

一個狀態(tài)欄是用于顯示狀態(tài)信息的一個組件。

#!/usr/bin/python3
# -*- coding:utf-8 -*- 

  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_())

狀態(tài)欄在QMainWindow組件的幫助下被創(chuàng)建。

self.statusBar().showMessage("Ready")

為了獲取狀態(tài)欄,我們調用類QtGui.QMainWindow的statusBar()方法。該方法的第一個調用創(chuàng)建一個狀態(tài)欄。子序列調用返回狀態(tài)欄對象。showMessage()展示在狀態(tài)欄上的信息。

下面是這個小例子程序的運行結果:

簡單的菜單

菜單欄是GUI應用程序的通用組件。他是一組位于多個菜單的命令。(Mac OS以不同的方式對待菜單欄。為了獲得相似的輸出,我們可以添加下列一行:menubar.setNativeMenubar(False)。)

#!/usr/bin/python3
# -*- coding:utf-8 -*-

import sys
from PyQt5.QtWidgets import QMainWindow,QAction, QApplication, qApp
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_())

在上面的例子程序中,我們創(chuàng)建了一個帶有一個菜單的菜單欄。這個菜單包含一個動作,如果選中的話,將會終止該應用程序。當然,也創(chuàng)建了一個狀態(tài)欄。這個動作也可以使用Ctrl+Q快捷鍵。

exitAct = QAction(QIcon("exit.png"),"&Exit",self)
exitAct.setShortcut("Ctrl+Q")
exitAct.setStatusTip("Exit application")

QAction是一個運行在菜單欄,工具欄和定制鍵盤快捷鍵的抽象類。在上面三行中,我們使用特定的圖標和一個'Exit'標簽創(chuàng)建了一個行為。進一步說,一個快捷鍵為了這個行為被定義。第三行創(chuàng)建了一個狀態(tài)提示,當鼠標經過該菜單選項的時候,被顯示在狀態(tài)欄上。

exitAct.triggered.connect(qApp.quit)

當我們選中這個特定的行為的時候,一個觸發(fā)的信號被提交。該信號被連接到QApplication組件的quit()方法。這個會終止這個程序。

menubar = self.menuBar()
fileMenu = menubar.addMenu("&File")
fileMenu.addAction(exitAct)

menuBar()方法創(chuàng)建了一個菜單欄。我們使用addMenu()創(chuàng)建了一個文件按鈕,并且使用addAction()方法添加一個行為。

下面是該小例子的截圖:

![enter description here][2

子菜單

一個子菜單是位于另外一個菜單中的一個菜單。

#!/usr/bin/python3
# -*- coding:utf-8 -*-

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_())

在這個例子中,我們有兩個菜單選項;一個位于文件菜單中,另一個位于文件的Import子菜單中。

impMenu = QMenu("Import", self)

新的菜單使用QMenu創(chuàng)建。

impAct = QAction("Import mail", self)
impMenu.addAction(impAct)

一個行為通過使用addAction()被添加到子菜單中。

選項菜單

在下面的例子中,我們創(chuàng)建了一個按鈕可以被選中或者是不被選中。

#!/usr/bin/python3
# -*- coding:utf-8 -*-

import sys
from PyQt5.QtWidgets import QMainWindow,QApplication,QAction

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_())

這個代碼例子創(chuàng)建了帶有一個行為的視圖菜單。這個行為顯示或者是隱藏狀態(tài)欄。當狀態(tài)欄可視的時候,菜單選項被選中。

viewStatAct = QAction('View statusbar', self, checkable=True)

使用checkable選項,我們創(chuàng)建了一個可選擇菜單。

viewStatAct.setChecked(True)

因為狀態(tài)欄在一開始的時候是可視的,我們使用setChecked()方法來設置該行為。

def toggleMenu(self, state):
  if state:
    self.statusbar.show()
  else:
    self.statusbar.hide()

依賴于行為選中的狀態(tài),我們設置狀態(tài)欄是否顯示。

上下文菜單

一個上下文菜單,也被稱作彈出菜單,一個出現(xiàn)在一些上下文中的一個命令列表。例如,在一個Opera網頁瀏覽器中,當你在一個網頁中右擊的時候,我們獲得一個上下文菜單。在這里我們可以重新加載一個頁面,回退,或者是查看頁面源碼。如果我們右擊一個工具欄,我們將會得到管理工具欄的另一個上下文菜單。

#!/usr/bin/python3
# -*- coding:utf-8 -*-

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()方法。

action = cmenu.exec_(self.mapTpGlobal(event.pos()))

該上下文菜單被exec_()方法顯示。他們從事件對象中獲得鼠標指針的坐標。mapToGlobal()方法傳遞組件的坐標到全局的屏幕坐標。

if action == quitAct:
  qApp.quit()

如果從上下文菜單返回的行為等于退出行為,則程序被終止。

工具欄

在一個應用程序中,菜單欄組織了所有的命令。工具欄提供了常用命令的快速訪問途徑。

#!/usr/bin/python3
# -*- coding:utf-8 -*-

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.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_())

在上面的例子中,我們創(chuàng)建了一個簡單的工具欄。工具欄有一個工具行為,一個退出行為,當觸發(fā)的時候終止程序。

  exitAct = QAction(QIcon("exit.png"),"Exit",self)
    exitAct.setShortcut("Ctrl+Q")
    exitAct.triggered.connect(qApp.quit)

和上面例子中的菜單欄一樣,我們創(chuàng)建了一個行為對象。該對象有一個標簽,圖標和一個快捷方式。Qt.QMainWindow中的一個quit()方法被連接到觸發(fā)信號中。

   self.toolbar = self.addToolBar("Exit")
   self.toolbar.addAction(exitAct)

工具欄被addToolBar()被創(chuàng)建。我們使用addAction()方法添加一個行為對象到工具欄中。

把他們放到一起

在最后一個例子中,我們將會創(chuàng)建一個菜單欄,工具欄和一個狀態(tài)欄。我們也將會創(chuàng)建一個中心的組件。

#!/usr/bin/python3
# -*- coding:utf-8 -*-

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("exit.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_())

在這里,我們創(chuàng)建了一個文本編輯組件。我們也把它設置成為QMainWindow的中心組件。中心組件被分為剩余空間的所有空間。

本篇章中,我們學習了菜單欄,工具欄和狀態(tài)欄,還有一個主程序窗口。希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 詳解Python 2.6 升級至 Python 2.7 的實踐心得

    詳解Python 2.6 升級至 Python 2.7 的實踐心得

    本篇文章主要介紹了詳解Python 2.6 升級至 Python 2.7 的實踐心得,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 簡單了解Django應用app及分布式路由

    簡單了解Django應用app及分布式路由

    這篇文章主要介紹了簡單了解Django應用app及分布式路由,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • 想學python 這5本書籍你必看!

    想學python 這5本書籍你必看!

    想學python,這5本書籍你必看!本文為大家推薦了學習python的5本書籍,5本經典書籍,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Python Numpy 自然數填充數組的實現(xiàn)

    Python Numpy 自然數填充數組的實現(xiàn)

    今天小編就為大家分享一篇Python Numpy 自然數填充數組的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python使用cx_Oracle模塊操作Oracle數據庫詳解

    Python使用cx_Oracle模塊操作Oracle數據庫詳解

    這篇文章主要介紹了Python使用cx_Oracle模塊操作Oracle數據庫,結合實例形式較為詳細的分析了cx_Oracle模塊的下載、安裝及針對Oracle數據庫的連接、執(zhí)行SQL語句、存儲過程等相關操作技巧,需要的朋友可以參考下
    2018-05-05
  • PyQt5+QtChart繪制散點圖

    PyQt5+QtChart繪制散點圖

    QChart是一個QGraphicScene中可以顯示的QGraphicsWidget。本文將利用QtChart實現(xiàn)繪制散點圖,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-12-12
  • 通過Python中的CGI接口講解什么是WSGI

    通過Python中的CGI接口講解什么是WSGI

    這篇文章主要為大家通過Python中的CGI接口及應用示例講解什么是WSGI,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • 對numpy中的數組條件篩選功能詳解

    對numpy中的數組條件篩選功能詳解

    今天小編就為大家分享一篇對numpy中的數組條件篩選功能詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python requests上傳文件實現(xiàn)步驟

    Python requests上傳文件實現(xiàn)步驟

    這篇文章主要介紹了Python requests上傳文件實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • Python全局鎖中如何合理運用多線程(多進程)

    Python全局鎖中如何合理運用多線程(多進程)

    這篇文章主要介紹了Python全局鎖中如何合理運用多線程(多進程),需要的朋友可以參考下
    2019-11-11

最新評論