QPushButton:
描述:
用来给用户点击,来完成某种动作的控件 一般是矩形
例如:
登录按钮
注册按钮
关闭按钮
继承:QAbstractButton
功能作用:
创建按钮控件:
QPushButton() 创建一个无父控件的按钮控件
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_())