PyQt5之QPushButton對象

之前已經介紹了按鈕的抽象類,現在我們開始介紹第一個按鈕類;

創建

# 創建一個無父控件的按鈕控件
QPushButton()
# 創建控件的同時, 設置父控件
QPushButton(parent)
# 創建控件的同時, 設置提示文本和父控件
QPushButton(text, parent)
# 創建控件的同時, 設置圖標, 提示文本和父控件
QPushButton(icon, text, parent)

下拉菜單的設置

首先需要介紹的是PyQt5中菜單的概念,我們日常使用菜單會發現,在下拉菜單中,有些是直接執行某些操作的,而另一些則包含下一級的菜單選項,第一種我們稱之爲行爲動作,第二種則稱之爲子菜單。

from PyQt5.Qt import *  # 主要包含了我們常用的一些類,彙總到了一塊
import sys

# 2、創建一個應用程序對象
app = QApplication(sys.argv)
# 創建一個窗口
window = QWidget()
window.resize(500, 500)
# 創建一個按鈕
bnt = QPushButton(window)
bnt.setText('按鈕')

# 設置菜單
# 需求
# 子菜單:最近打開
# 行爲動作:新建、打開、分割線、退出

# 創建一個菜單對象
menu = QMenu()

# 創建“新建”行爲
new_action = QAction()
new_action.setText("新建")
# 當行爲被點擊之後會發出一個信號triggered,我們可以監聽這個信號
new_action.triggered.connect(lambda:print("新建文件"))

# 創建“打開”行爲
open_action = QAction()
open_action.setText("打開")
# 當行爲被點擊之後會發出一個信號triggered,我們可以監聽這個信號
open_action.triggered.connect(lambda:print("打開文件"))

# 創建“退出“行爲
exit_action = QAction()
exit_action.setText("退出")
# 當行爲被點擊之後會發出一個信號triggered,我們可以監聽這個信號
exit_action.triggered.connect(lambda:print("退出文件"))

# 創建一個子菜單
open_recent_menu = QMenu(menu)
open_recent_menu.setTitle("最近打開")
# 爲子菜單編寫一個行爲
new_file_action = QAction()
new_file_action.setText("xxx.file")

# 將以上設置好的行爲,賦值給菜單對象
menu.addAction(new_action)
menu.addAction(open_action)
menu.addMenu(open_recent_menu)
# 加入分割線
menu.addSeparator()
menu.addAction(exit_action)
open_recent_menu.addAction(new_file_action)

bnt.setMenu(menu)

window.show()

# 可以通過代碼對菜單進行展示
bnt.showMenu()

# 4、應用程序的執行、進入消息循環。是整個程序進入無限循環
sys.exit(app.exec_())

邊框扁平化設置

# 設置扁平化的方法
setFlat(bool)

信號

# 鼠標按下信號
pressed()
# 鼠標釋放
released()
# 控件內按下+控件內釋放
clicked(checked = false)
# 切換信號(一般在單選框或者複選框中使用)
toggled(bool checked)
# 窗口標題改變信號
windowTitleChanged(QString)
# 窗口圖標改變信號
windowIconChanged(QIcon)
# 自定義上下文菜單請求信號
customContextMenuRequested(QPoint)

右鍵菜單的實現

from PyQt5.Qt import *
import sys

class Window(QWidget):
    def contextMenuEvent(self, QContextMenuEvent):
        # 創建一個菜單對象
        menu = QMenu(self)
        
        # 創建“新建”行爲
        new_action = QAction()
        new_action.setText("新建")
        # 當行爲被點擊之後會發出一個信號triggered,我們可以監聽這個信號
        new_action.triggered.connect(lambda:print("新建文件"))
        
        # 創建“打開”行爲
        open_action = QAction()
        open_action.setText("打開")
        # 當行爲被點擊之後會發出一個信號triggered,我們可以監聽這個信號
        open_action.triggered.connect(lambda:print("打開文件"))
        
        # 創建“退出“行爲
        exit_action = QAction()
        exit_action.setText("退出")
        # 當行爲被點擊之後會發出一個信號triggered,我們可以監聽這個信號
        exit_action.triggered.connect(lambda:print("退出文件"))
        
        # 創建一個子菜單
        open_recent_menu = QMenu(menu)
        open_recent_menu.setTitle("最近打開")
        # 爲子菜單編寫一個行爲
        new_file_action = QAction()
        new_file_action.setText("xxx.file")
        
        # 將以上設置好的行爲,賦值給菜單對象
        menu.addAction(new_action)
        menu.addAction(open_action)
        menu.addMenu(open_recent_menu)
        # 加入分割線
        menu.addSeparator()
        menu.addAction(exit_action)
        open_recent_menu.addAction(new_file_action)
        
        # 展示右鍵菜單
        menu.exec_(QContextMenuEvent.globalPos())

window = Window()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章