GUI程式設計Pyqt5之設定夥伴關係
阿新 • • 發佈:2021-02-05
技術標籤:# PyQt5
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_())