之前已經介紹了按鈕的抽象類,現在我們開始介紹第一個按鈕類;
創建
# 創建一個無父控件的按鈕控件
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()