pyqt5-007

QPushButton:

  描述:

    用来给用户点击,来完成某种动作的控件  一般是矩形

    例如:

      登录按钮

      注册按钮

      关闭按钮

  继承:QAbstractButton

  功能作用:

    创建按钮控件:

      QPushButton() 创建一个无父控件的按钮控件

扫描二维码关注公众号,回复: 11191746 查看本文章

      QPushButton(parent)  创建控件的同时,设置父控件

      QPushButton(text, parent)  创建控件的同时,设置文本和父控件

      QPushButton(icon, text, parent) 创建控件的痛死,设置图标,提示文本和父控件

    菜单:

      API : 

        setMenu(QMenu) : 设置菜单

        menu() :  获取菜单

        showMenu() :  展示菜单

      应用场景:可以设置点击按钮是弹出的菜单,供用户选择

      QMenu:

        添加子菜单:addMenu(QMenu)

        添加分割线:addSeparator()

        添加行为动作:addAction(QAction)

        QMenu控件设置:setTitle(str)  setIcon(QIcon())

        QAction设置:setText(str) setIcon(QIcon())  信号:triggered

    边框是否保持扁平:

      API:

        setFlat(bool):

          默认值为False

          设置了此属性,则除非按下按钮,否则大多数样式都不会绘制按钮背景

        isFlat():获取当前按钮边框是否扁平

      应用场景:设置按钮扁平化风格

    默认处理:

      API:

        setAutoDefault():

          设置为自动默认按钮

          在某些GUI样式中,默认按钮被绘制,其周围有一个额外的框架,最多3个像素或更多

          Qt会自动在自动默认按钮周围保留此空间,即自动默认按钮可能会稍大的提示

          对于具有QDialog父级的按钮,此属性的默认值为true;否则默认为false

        autoDefault()

        setDefault(bool)

        isDefault()

      应用场景:一般是在对话框中使用      

  信号:

    QAbstractButton:

      pressed():鼠标按下信号

      released():鼠标释放:(1.控件内松开鼠标  2.鼠标移出控件范围后松开)

      clicked(checked = false):控件内按下 + 控件内释放

      toggled(bool checked):切换信号(一般在单选框或者复选框中使用)

    QWidget:

      windowTitleChanged(QString):窗口标题改变信号

      windowIconChanged(QIcon):窗口图标改变信号

      customContextMenuRequested(QPoint):自定义上下文菜单请求信号:(1.setContextMenuPolicy(Qt.CustomContextMenu)   2.Qt.DefaultContextMenu=>(调用对象方法contextMenuEvent() )   3.Qt.CustomContextMenu=>(发射信号))

from PyQt5.Qt import *
import sys
app = QApplication(sys.argv)


class Window(QWidget):
    def contextMenuEvent(self, event):
        print('默认上下文运行')

        menu = QMenu(self)

        open_recently = QMenu(menu)
        open_recently.setTitle('最近打开')
        # open_recently.setIcon()

        # 行为动作 新建 打开 分割线 退出
        new_action = QAction()
        new_action.setText('新建')
        new_action.setIcon(QIcon('click.jpg'))

        new_action = QAction(QIcon('click.jpg'), '新建', menu)
        new_action.triggered.connect(lambda: print('新建文件'))

        open_action = QAction(QIcon('click.jpg'), '打开', menu)
        open_action.triggered.connect(lambda: print('打开文件'))

        exit_action = QAction(QIcon('click.jpg'), '退出', menu)
        exit_action.triggered.connect(lambda: print('退出'))
        #
        file_action = QAction('Python-GUI')
        #
        menu.addAction(new_action)
        menu.addAction(open_action)
        #
        open_recently.addAction(file_action)
        menu.addMenu(open_recently)
        # 添加另一个子菜单
        menu.addSeparator()
        # 添加分割线
        menu.addAction(exit_action)

        # 展示点 point
        # menu.exec_(QPoint(100, 100))
        # print(event.globalPos())
        menu.exec_(event.globalPos())

        # menu.exec_(event.pos())
        # print('展示菜单')


window = Window()

# window = QWidget()
window.resize(500, 500)
window.setWindowTitle('QPushButton')


btn = QPushButton(QIcon('click.jpg'), 'xxx', window)

# btn.setParent(window)
# btn.setText('xxx')
# btn.setIcon(QIcon('click.jpg'))

# btn.show()

# ******************菜单的设置***********************
# menu = QMenu(window)

# 子菜单 最近打开
# open_recently = QMenu(menu)
# open_recently.setTitle('最近打开')
# # open_recently.setIcon()
#
# # 行为动作 新建 打开 分割线 退出
# new_action = QAction()
# new_action.setText('新建')
# new_action.setIcon(QIcon('click.jpg'))
#
# new_action = QAction(QIcon('click.jpg'), '新建', menu)
# new_action.triggered.connect(lambda : print('新建文件'))
#
# open_action = QAction(QIcon('click.jpg'), '打开', menu)
# open_action.triggered.connect(lambda : print('打开文件'))
#
# exit_action = QAction(QIcon('click.jpg'), '退出', menu)
# exit_action.triggered.connect(lambda : print('退出'))
# #
# file_action = QAction('Python-GUI')
# #
# menu.addAction(new_action)
# menu.addAction(open_action)
# #
# open_recently.addAction(file_action)
# menu.addMenu(open_recently)
# # 添加另一个子菜单
# menu.addSeparator()
# # 添加分割线
# menu.addAction(exit_action)


# btn.setMenu(menu)
# btn.showMenu()
# ******************设置结束*************************

# print(btn.menu)
# btn.setFlat(True)
# 为按钮设置扁平化
# print(btn.isFlat())
# 判断是否为扁平化
# btn.setStyleSheet('background-color:red')
# 设置扁平化后不会显示样式



# btn2 = QPushButton(window)
# btn2.setText('btn2')
# btn2.move(190, 200)
# btn2.setAutoDefault(True)
# 设置自动默认,当选中时
# print(btn.autoDefault())
# print(btn2.autoDefault())
# btn2.setDefault(True)
# 设置默认选中

def show_menu(point):
    menu = QMenu(window)

    open_recently = QMenu(menu)
    open_recently.setTitle('最近打开')
    # open_recently.setIcon()

    # 行为动作 新建 打开 分割线 退出
    new_action = QAction()
    new_action.setText('新建')
    new_action.setIcon(QIcon('click.jpg'))

    new_action = QAction(QIcon('click.jpg'), '新建', menu)
    new_action.triggered.connect(lambda: print('新建文件'))

    open_action = QAction(QIcon('click.jpg'), '打开', menu)
    open_action.triggered.connect(lambda: print('打开文件'))

    exit_action = QAction(QIcon('click.jpg'), '退出', menu)
    exit_action.triggered.connect(lambda: print('退出'))
    #
    file_action = QAction('Python-GUI')
    #
    menu.addAction(new_action)
    menu.addAction(open_action)
    #
    open_recently.addAction(file_action)
    menu.addMenu(open_recently)
    # 添加另一个子菜单
    menu.addSeparator()
    # 添加分割线
    menu.addAction(exit_action)

    # 展示点 point
    # menu.exec_(QPoint(100, 100))
    # print(event.globalPos())

    dest_point = window.mapToGlobal(point)
    # 将window上的point位置坐标映射到桌面上

    menu.exec_(dest_point)
    print('自定义上下文菜单', point)

window.setContextMenuPolicy(Qt.CustomContextMenu)
# 自定义上下文菜单
window.customContextMenuRequested.connect(show_menu)
# 发射信号

window.show()
sys.exit(app.exec_())

                          

         

    

猜你喜欢

转载自www.cnblogs.com/superSmall/p/12877945.html