Pyqt5之设置伙伴关系
讲述表单布局管理器时提到了设置一个标签和一个部件的伙伴关系。其实,伙伴 (buddy) 是在 QLabel 类中提出的一个概念。因为一个标签经常用作一个交互式部件的说明,就像在讲表单布局管理器时看到的那样,一个 lineEdit 部件前面有一个标签说明这个 lineEdit 的作用。为了方便定位,QLabel 提供了一个有用的机制,那就是提供了助记符来设置键盘焦点到对应的部件上,这个部件就叫这个 QLabel 的伙伴。其中助记符就是我们所说的加速键。使用英文标签时,在字符串的一个字母前面添加“&” 符号,那么就可以指定这个标签的加速键是Alt加上这个字母,而对于中文,需要在小括号中指定加速键字母。Qt设计器中也提供了伙伴设计模式
例子:
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class AppGui(QWidget):
def __init__(self):
super(AppGui, self).__init__()
self.initUI()
def initUI(self):
# self无父窗口,不是窗口部件,而是个窗口
self.setWindowTitle("我是widget")
# 设置布局管理器
layout = QVBoxLayout()
layout1 = QHBoxLayout()
layout2 = QHBoxLayout()
# 设置标签
label1 = QLabel("我是个窗口1")
label1.setText("姓名(&N)")
label2 = QLabel("我是个窗口2")
label2.setText("性别(&S)")
# 设置行编辑器
nameLineEdit = QLineEdit()
sexLineEdit = QLineEdit()
# 标签和行编辑器添加打相应布局管理器中
layout1.addWidget(label1)
layout1.addWidget(nameLineEdit)
layout2.addWidget(label2)
layout2.addWidget(sexLineEdit)
# 分别设置伙伴关系
label1.setBuddy(nameLineEdit)
label2.setBuddy(sexLineEdit)
# 将子布局管理器添加到父布局管理器中
layout.addLayout(layout1)
layout.addLayout(layout2)
# 设置全局布局管理器
self.setLayout(layout)
if __name__ == '__main__':
# 创建应用程序
app = QApplication(sys.argv)
# 在应用程序里创建窗口
ui = AppGui()
# 显示窗口
ui.show()
# 进入程序的主循环、并通过exit函数确保主循环安全结束
sys.exit(app.exec_())