继承关系
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6773fef0f4fa516ae74cc89942916636.png)
学习计划
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/11222525ad7229004f97261a190810a1.png)
常用信号
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/817a67a32b40e5c0f8e9738d1d95b69a.png)
1.创建按钮控件
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/146e12c0ff188a545b1f053e36bce591.png)
应用场景
from PyQt5.Qt import *
import sys
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("按钮的功能")
window.resize(500, 500)
btn1 = QPushButton()
btn2 = QPushButton(window)
btn2.move(50,50)
btn3 = QPushButton("按钮文本",window)
btn3.move(100,100)
btn4 = QPushButton(QIcon("xxx.png"),"按钮文本",window)
btn4.move(150,150)
window.show()
sys.exit(app.exec_())
2.设置快捷键(参考父类的快捷键讲解)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5d01406a2d135dd325b578ff2f5bb340.png)
3.菜单功能
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/da4b80190b22126045ae2c6f17f1d6db.png)
应用场景
from PyQt5.Qt import *
import sys
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("按钮的功能")
window.resize(500, 500)
btn = QPushButton(QIcon("xxx.png"),"按钮文本",window)
btn.move(100,100)
menu = QMenu(window)
open_recent_menu = QMenu(menu)
open_recent_menu.setTitle("最近打开")
open_recent_menu.setIcon(QIcon("xxx.png"))
new_action = QAction(QIcon("xxx.png"), "新建", menu)
new_action.triggered.connect(lambda :print("新建文件"))
open_action = QAction(QIcon("xxx.png"), "打开", menu)
open_action.triggered.connect(lambda :print("打开文件"))
exit_action = QAction("退出", menu)
exit_action.triggered.connect(lambda :print("退出程序"))
file_action = QAction("Python-GUI编程-PyQt5")
file_action.triggered.connect(lambda :print("点击了子菜单选项"))
menu.addAction(new_action)
menu.addAction(open_action)
menu.addMenu(open_recent_menu)
open_recent_menu.addAction(file_action)
menu.addSeparator()
menu.addAction(exit_action)
btn.setMenu(menu)
print(btn.menu())
window.show()
sys.exit(app.exec_())
4.边框是否保持扁平(除了破坏样式显示,暂时看来没啥p用)
- 设置了此属性,则除非按下按钮,否则大多数样式都不会绘制按钮背景
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0232a6bdfb88f0a52b84d1530595806d.png)
应用场景
```python
from PyQt5.Qt import *
import sys
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("按钮的功能")
window.resize(500, 500)
btn = QPushButton(QIcon("xxx.png"),"按钮文本",window)
btn.move(100,100)
menu = QMenu(window)
open_recent_menu = QMenu(menu)
open_recent_menu.setTitle("最近打开")
open_recent_menu.setIcon(QIcon("xxx.png"))
new_action = QAction(QIcon("xxx.png"), "新建", menu)
new_action.triggered.connect(lambda :print("新建文件"))
menu.addAction(new_action)
menu.addAction(open_action)
menu.addMenu(open_recent_menu)
open_recent_menu.addAction(file_action)
menu.addSeparator()
menu.addAction(exit_action)
btn.setMenu(menu)
print(btn.menu())
btn.setStyleSheet("background-color: red;")
btn.setFlat(True)
print(btn.isFlat())
window.show()
sys.exit(app.exec_())
5.默认处理(设置默认按钮,没用!就是细节问题,需要用的时候查一下得了)
- 效果如下图,有个默认的提示按钮,可以直接enter选中,个人认为没啥用,点一下又不会shi~~
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/64b6b0b0a3f341693e81b3023e5061e7.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/eb5258d64616c5186cad76efeee56fb7.png)
本节补充(右键菜单设置-自定义上下文菜单请求信号)
- 第一种方式:重写contextMenuEvent方法
from PyQt5.Qt import *
import sys
class Window(QWidget):
def contextMenuEvent(self, evt):
print("默认上下文菜单调用这个方法")
menu = QMenu(self)
open_recent_menu = QMenu(menu)
open_recent_menu.setTitle("最近打开")
new_action = QAction(QIcon("xxx.png"), "新建", menu)
new_action.triggered.connect(lambda: print("新建文件"))
open_action = QAction(QIcon("xxx.png"), "打开", menu)
open_action.triggered.connect(lambda: print("打开文件"))
exit_action = QAction("退出", menu)
exit_action.triggered.connect(lambda: print("退出程序"))
file_action = QAction("Python-GUI编程-PyQt5")
menu.addAction(new_action)
menu.addAction(open_action)
open_recent_menu.addAction(file_action)
menu.addMenu(open_recent_menu)
menu.addSeparator()
menu.addAction(exit_action)
menu.exec_(evt.globalPos())
app = QApplication(sys.argv)
window = Window()
window.setWindowTitle("按钮的功能")
window.resize(500, 500)
window.show()
sys.exit(app.exec_())
- 第二种方式:设置setContextMenuPolicy
from PyQt5.Qt import *
import sys
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("按钮的功能")
window.resize(500, 500)
def show_menu(point):
menu = QMenu(window)
open_recent_menu = QMenu(menu)
open_recent_menu.setTitle("最近打开")
new_action = QAction(QIcon("xxx.png"), "新建", menu)
new_action.triggered.connect(lambda: print("新建文件"))
open_action = QAction(QIcon("xxx.png"), "打开", menu)
open_action.triggered.connect(lambda: print("打开文件"))
exit_action = QAction("退出", menu)
exit_action.triggered.connect(lambda: print("退出程序"))
file_action = QAction("Python-GUI编程-PyQt5")
menu.addAction(new_action)
menu.addAction(open_action)
open_recent_menu.addAction(file_action)
menu.addMenu(open_recent_menu)
menu.addSeparator()
menu.addAction(exit_action)
dest_point = window.mapToGlobal(point)
print(dest_point)
menu.exec_(dest_point)
window.setContextMenuPolicy(Qt.CustomContextMenu)
window.customContextMenuRequested.connect(show_menu)
window.show()
sys.exit(app.exec_())