一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Python界面(GUI)編程PyQt5工具欄和菜單

 copy_left 2020-10-13
Python界面(GUI)編程PyQt5工具欄和菜單

工具欄

工具欄是最常見的用戶界面元素之一。工具欄是用于在應(yīng)用程序中執(zhí)行常見任務(wù)的圖標和文本欄。

Qt工具欄支持圖標,文本的顯示,還可以包含任何標準Qt小部件。但是,對于按鈕,最好的方法是利用QAction系統(tǒng)在工具欄上放置按鈕。

讓我們從向應(yīng)用程序添加工具欄開始。

在Qt中,從QToolBar類創(chuàng)建工具欄。首先,創(chuàng)建該類的實例,然后調(diào)用.addToolbar。傳入字符串作為第一個參數(shù)來設(shè)置工具欄的名稱,該名稱將用于在UI中標識工具欄。

import sysimport requestsimport jsonfrom PyQt5.QtCore import Qtfrom PyQt5.QtWidgets import QWidgetfrom PyQt5.QtWidgets import QApplicationfrom PyQt5.QtWidgets import QDesktopWidget, QMessageBox, QLabel, QPushButton, QActionfrom PyQt5.QtWidgets import QLineEdit, QTextEditfrom PyQt5.QtWidgets import QStatusBar from PyQt5.QtWidgets import QToolBarfrom PyQt5.QtWidgets import QMainWindow class MainWindow(QMainWindow): def __init__(self, *args, **kwargs): super(MainWindow, self).__init__(*args, **kwargs) self.setWindowTitle('高效碼農(nóng)') label = QLabel('高效碼農(nóng)') label.setAlignment(Qt.AlignCenter) self.setCentralWidget(label) toolbar = QToolBar('高效碼農(nóng) Toolbar') self.addToolBar(toolbar) self.show() def onMyToolBarButtonClick(self, s): print('click', s)if __name__ == '__main__': app = QApplication(sys.argv) tools = MainWindow() sys.exit(app.exec_()) pass

運行效果:

Python界面(GUI)編程PyQt5工具欄和菜單

我們應(yīng)該使工具欄更有趣一些。我們可以只添加一個QButton部件,但在Qt中還有一個更好的方法可以讓你獲得一些很酷的特性——那就是通過QAction。QAction是一個類,它提供了一種描述抽象用戶接口的方法。在英語中,這意味著您可以在一個對象中定義多個接口元素,通過與該元素交互的效果來統(tǒng)一這些元素。例如,在工具欄和菜單中都有一些函數(shù)表示,比如Edit——>Cut,它既出現(xiàn)在編輯菜單中,也出現(xiàn)在工具欄上,就像剪刀一樣,也可以通過快捷鍵Ctrl-X (Mac上的Cmd-X)。

如果沒有QAction,就必須在多個地方定義它。但是使用QAction,您可以定義單個QAction,定義被觸發(fā)的動作,然后將這個動作添加到菜單和工具欄中。每個QAction都有您可以連接的名稱、狀態(tài)消息、圖標和信號(以及更多)。

在下面的代碼中,您可以看到添加了第一個QAction。

import sysfrom PyQt5.QtCore import Qtfrom PyQt5.QtWidgets import QWidgetfrom PyQt5.QtWidgets import QApplicationfrom PyQt5.QtWidgets import QDesktopWidget, QMessageBox, QLabel, QPushButton, QActionfrom PyQt5.QtWidgets import QLineEdit, QTextEditfrom PyQt5.QtWidgets import QStatusBar from PyQt5.QtWidgets import QToolBarfrom PyQt5.QtWidgets import QMainWindow class MainWindow(QMainWindow):    def __init__(self, *args, **kwargs):        super(MainWindow, self).__init__(*args, **kwargs)                self.setWindowTitle('高效碼農(nóng) App')                label = QLabel('高效碼農(nóng)!!!')        label.setAlignment(Qt.AlignCenter)                self.setCentralWidget(label)                toolbar = QToolBar('高效碼農(nóng) toolbar')        self.addToolBar(toolbar)                button_action = QAction('高效碼農(nóng) button', self)        button_action.setStatusTip('T高效碼農(nóng) button')        button_action.triggered.connect(self.onMyToolBarButtonClick)        toolbar.addAction(button_action)        self.show()                    def onMyToolBarButtonClick(self, s):        print('click', s)if __name__ == '__main__':    app = QApplication(sys.argv)    tools = MainWindow()    sys.exit(app.exec_())    pass

運行效果:

Python界面(GUI)編程PyQt5工具欄和菜單

首先,我們創(chuàng)建接收QAction信號的函數(shù),這樣我們就可以看到它是否在工作。接下來我們定義QAction本身。在創(chuàng)建實例時,我們可以傳遞動作的標簽和/或圖標。您還必須傳遞任何QObject以作為操作的父對象——這里我們將self作為對主窗口的引用傳遞。

接下來,我們可以選擇設(shè)置一個狀態(tài)提示——一旦我們設(shè)置了一個狀態(tài)提示,這個文本將顯示在狀態(tài)欄上。最后,我們將.triggered信號連接到定制函數(shù)。這個信號將在QAction被觸發(fā)(或激活)時觸發(fā)。

接下來我們可以添加一個狀態(tài)欄。

我們通過調(diào)用QStatusBar來創(chuàng)建一個狀態(tài)欄對象,以獲得一個新的狀態(tài)欄對象,然后將其傳遞給。setstatusbar。因為我們不需要改變狀態(tài)欄的設(shè)置,我們也可以在創(chuàng)建時傳入它:

import sysfrom PyQt5.QtCore import Qtfrom PyQt5.QtWidgets import QWidgetfrom PyQt5.QtWidgets import QApplicationfrom PyQt5.QtWidgets import QDesktopWidget, QMessageBox, QLabel, QPushButton, QActionfrom PyQt5.QtWidgets import QLineEdit, QTextEditfrom PyQt5.QtWidgets import QStatusBar from PyQt5.QtWidgets import QToolBarfrom PyQt5.QtWidgets import QMainWindow class MainWindow(QMainWindow): def __init__(self, *args, **kwargs): super(MainWindow, self).__init__(*args, **kwargs) self.setWindowTitle('高效碼農(nóng) App') label = QLabel('高效碼農(nóng)!!!') label.setAlignment(Qt.AlignCenter) self.setCentralWidget(label) toolbar = QToolBar('高效碼農(nóng) toolbar') self.addToolBar(toolbar) button_action = QAction('高效碼農(nóng) button', self) button_action.setStatusTip('高效碼農(nóng) button') button_action.triggered.connect(self.onMyToolBarButtonClick) toolbar.addAction(button_action) self.setStatusBar(QStatusBar(self)) self.show() def onMyToolBarButtonClick(self, s): print('click', s)if __name__ == '__main__': app = QApplication(sys.argv) tools = MainWindow() sys.exit(app.exec_()) pass

運行效果:

Python界面(GUI)編程PyQt5工具欄和菜單

接下來,我們將把QAction切換為toggleable——點擊將選中它,再次點擊將選中取消。為此,我們在QAction對象上調(diào)用setCheckable(True)。

import sysfrom PyQt5.QtCore import Qtfrom PyQt5.QtWidgets import QWidgetfrom PyQt5.QtWidgets import QApplicationfrom PyQt5.QtWidgets import QDesktopWidget, QMessageBox, QLabel, QPushButton, QActionfrom PyQt5.QtWidgets import QLineEdit, QTextEditfrom PyQt5.QtWidgets import QStatusBar from PyQt5.QtWidgets import QToolBarfrom PyQt5.QtWidgets import QMainWindow class MainWindow(QMainWindow):    def __init__(self, *args, **kwargs):        super(MainWindow, self).__init__(*args, **kwargs)                self.setWindowTitle('高效碼農(nóng) App')                label = QLabel('高效碼農(nóng)!!!')        label.setAlignment(Qt.AlignCenter)                self.setCentralWidget(label)                toolbar = QToolBar('高效碼農(nóng) toolbar')        self.addToolBar(toolbar)                button_action = QAction('高效碼農(nóng) button', self)        button_action.setStatusTip('高效碼農(nóng) button')        button_action.triggered.connect(self.onMyToolBarButtonClick)        button_action.setCheckable(True)        toolbar.addAction(button_action)                self.setStatusBar(QStatusBar(self))        self.show()                    def onMyToolBarButtonClick(self, s):        print('click', s)if __name__ == '__main__':    app = QApplication(sys.argv)    tools = MainWindow()    sys.exit(app.exec_())    pass

運行效果:

Python界面(GUI)編程PyQt5工具欄和菜單

單擊該按鈕可以看到它從選中狀態(tài)切換到未選中狀態(tài)。注意,我們現(xiàn)在創(chuàng)建的自定義槽函數(shù)會交替輸出'True'和'False'。

現(xiàn)在界面功能基本完善,但是很丑;讓我們美化一下:

import sysfrom PyQt5.QtCore import Qtfrom PyQt5.QtCore import QSizefrom PyQt5.QtGui import QIconfrom PyQt5.QtWidgets import QWidgetfrom PyQt5.QtWidgets import QApplicationfrom PyQt5.QtWidgets import QDesktopWidget, QMessageBox, QLabel, QPushButton, QActionfrom PyQt5.QtWidgets import QStatusBar from PyQt5.QtWidgets import QToolBarfrom PyQt5.QtWidgets import QMainWindow class MainWindow(QMainWindow): def __init__(self, *args, **kwargs): super(MainWindow, self).__init__(*args, **kwargs) self.setWindowTitle('高效碼農(nóng) App') label = QLabel('高效碼農(nóng)!!!') label.setAlignment(Qt.AlignCenter) self.setCentralWidget(label) toolbar = QToolBar('My main toolbar') toolbar.setIconSize(QSize(16,16)) self.addToolBar(toolbar) button_action = QAction(QIcon('user.png'), 'Your button', self) button_action.setStatusTip('This is your button') button_action.triggered.connect(self.onMyToolBarButtonClick) button_action.setCheckable(True) toolbar.addAction(button_action) self.setStatusBar(QStatusBar(self)) self.show() def onMyToolBarButtonClick(self, s): print('click', s)if __name__ == '__main__': app = QApplication(sys.argv) tools = MainWindow() sys.exit(app.exec_()) pass

運行結(jié)果:

Python界面(GUI)編程PyQt5工具欄和菜單

精美的16x16圖標


下載地址:https://www./usr/uploads/2020/08/2366200963.zip

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    99久久精品国产麻豆| 国产成人午夜在线视频| 欧美成人免费夜夜黄啪啪| 国产欧美日韩在线精品一二区| 91亚洲精品国产一区| 国产精品欧美激情在线观看| 日韩欧美精品一区二区三区| 国产一区二区三区口爆在线| 亚洲人午夜精品射精日韩 | 日本国产欧美精品视频| 一区二区免费视频中文乱码国产| 中文字幕五月婷婷免费 | 国产又大又硬又粗又黄| 国产又粗又深又猛又爽又黄| 九九久久精品久久久精品| 久久99亚洲小姐精品综合| 色丁香一区二区黑人巨大| 亚洲一区二区精品免费| 日韩丝袜诱惑一区二区| 好吊日在线视频免费观看| 日韩免费国产91在线| 色一欲一性一乱—区二区三区| 亚洲精品福利入口在线| 日本av在线不卡一区| 亚洲一区在线观看蜜桃| 加勒比人妻精品一区二区| 国产在线视频好看不卡| 国产亚洲视频香蕉一区| 亚洲熟女国产熟女二区三区| 国产精品一区二区成人在线| 在线观看日韩欧美综合黄片| 91国自产精品中文字幕亚洲| 免费黄色一区二区三区| 欧美日韩国产综合在线| 亚洲另类女同一二三区| 久久精品国产一区久久久| 91人人妻人人爽人人狠狠| 99久久精品国产麻豆| 欧美胖熟妇一区二区三区| 亚洲免费观看一区二区三区| 亚洲熟妇熟女久久精品 |