QPushButton按鈕


 


需要 from PyQt5.QtWidgets import QPushButton
繼承 QObject-->QWidget-->QAbstractButton-->QPushButton


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



菜單設置:
需要 from PyQt5.QtWidgets import QMenu
setMenu(QMenu) 設置菜單
menu() 獲取菜單
showMenu() 展示菜單

from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QMenu,QAction
import sys
from PyQt5.QtGui import QIcon

class win(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(300,300)
        self.setWindowTitle('菜單')
        self.num=0
        self.btn=QPushButton('按鈕1',self)
        self.btn.move(100,50)
        self.btn.setIcon(QIcon('大象.png'))

        menu=QMenu() #創建菜單
        #action1=QAction(menu) #創建行為
        #這個行為要有父對象self或menu,否則不顯示
        #action1.setText('新建') #行為顯示的文本
        #action1.setIcon(QIcon('新建.png')) #給行為添加圖標
        action1 = QAction(QIcon('新建.png'),'新建',menu) #創建行為
        menu.addAction(action1) #給菜單添加行為
    #每次只能添加一個行為
menu.addSeparator() #添加分割線
action2 = QAction(QIcon('打開.png'), '打開', menu) menu.addAction(action2) self.btn.setMenu(menu) #給按鈕設置菜單 action1.triggered.connect(lambda :print('新建文件')) #點擊行為時連接的槽函數 menu1=QMenu(menu) #創建子菜單 menu1.setTitle('最近打開') #給子菜單設置標題 menu.addMenu(menu1) #添加子菜單 if __name__=='__main__': app=QApplication(sys.argv) w=win() w.show() #w.btn.showMenu() #自動顯示菜單 sys.exit(app.exec_())

 


信號:
  QAbstractButton:
    pressed() 鼠標按下信號
    released() 鼠標釋放
    clicked()    控件內按下+控件內釋放
    toggled(bool checked) 切換信號(一般在單選框或者復選框中使用)

  QWidget:
    windowTitleChanged(QString) 窗口標題改變信號
    windowIconChanged(QIcon) 窗口圖標改變信號
    customContextMenuRequested(QPoint) 自定義上下文菜單請求信號






是否扁平:

setFlat(bool) 是否扁平
    默認值為False 設置了此屬性,則除非按下按鈕,否則大多數樣式都不會繪制按鈕背景

isFlat() 獲取當前按鈕邊框是否扁平



默認處理:

setAutoDefault(bool) 設置為自動默認按鈕
  在某些GUI樣式中,默認按鈕被繪制,其周圍有一個額外的框架,最多3個像素或更多。Qt會自動在自動默認按鈕周圍保留此空間,即自動默認按鈕可能會有稍大的提示
  對於具有QDialog父級的按鈕,此屬性的默認值為true ; 否則默認為false。

setDefault(bool) 設置是否默認按鈕

autoDefault()   返回是否自動默認
isDefault()    是否默認按鈕


右鍵菜單:

方法一:重寫控件方法 contextMenuEvent()

from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QMenu,QAction
import sys

class win(QWidget):
    def contextMenuEvent(self, evt) :   #在控件內右擊事件
        menu=QMenu(self)
        action1 = QAction(menu)  # 創建行為
        action1.setText('右擊菜單')
        action2 = QAction(menu)  # 創建行為
        action2.setText('右擊菜單1')
        menu.addAction(action1)  # 給菜單添加行為
        menu.addAction(action2)
        menu.exec_(evt.globalPos())  #展示菜單
        #參數 坐標-相對於屏幕

    def __init__(self):
        super().__init__()
        self.resize(300,300)
        self.setWindowTitle('右擊菜單')

if __name__=='__main__':
    app=QApplication(sys.argv)
    w=win()
    w.show()
    sys.exit(app.exec_())

 

方法二:

from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QMenu,QAction
import sys
from PyQt5.QtCore import Qt

class win(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(300,300)
        self.setWindowTitle('右擊菜單')
        self.menu=QMenu()
        action1=QAction(self.menu)
        action1.setText('菜單1')
        self.menu.addAction(action1)
        action2 = QAction(self.menu)
        action2.setText('菜單2')
        self.menu.addAction(action2)
        self.setContextMenuPolicy(Qt.CustomContextMenu)
        # setContextMenuPolicy  設置菜單
        # 參數Qt.CustomContextMenu  自定義菜單-此時右擊控件不會產生contextMenuEvent事件
        # Qt.DefaultContextMenu  默認菜單;也就是右擊時發生contextMenuEvent事件(方法一)
        self.customContextMenuRequested.connect(self.menushow)  #右擊時發出菜單請求信號
        #會向槽函數傳遞鼠標點擊點的坐標-相對於控件

    def menushow(self,point):
        point1=self.mapToGlobal(point)  #將窗口坐標轉換成屏幕坐標
        self.menu.exec_(point1)

if __name__=='__main__':
    app=QApplication(sys.argv)
    w=win()
    w.show()
    sys.exit(app.exec_())

 

 
        

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM