国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python3+PyQt5 自定義窗口部件--創建復合窗口部件

2019-11-08 19:54:51
字體:
來源:轉載
供稿:網友

復合窗口部件就是由兩個或者多個其他窗口部件組合在一起的窗口部件。在大的工程項目中創建可重復使用的復合窗口部件能夠節約大量時間。本文就是通過python3+PyQt5實現。

#!/usr/bin/env python3import sysfrom PyQt5.QtCore import Qtfrom PyQt5.QtWidgets import (Qapplication, QBoxLayout, QDialog, QDialogButtonBox, QGridLayout, QLabel, QLineEdit, QTextEdit, QVBoxLayout, QWidget)LEFT, ABOVE = range(2)class LabelledLineEdit(QWidget): def __init__(self, labelText="", position=LEFT, parent=None): super(LabelledLineEdit, self).__init__(parent) self.label = QLabel(labelText) self.lineEdit = QLineEdit() self.label.setBuddy(self.lineEdit) layout = QBoxLayout(QBoxLayout.LeftToRight if position == LEFT else QBoxLayout.TopToBottom) layout.addWidget(self.label) layout.addWidget(self.lineEdit) self.setLayout(layout)class LabelledTextEdit(QWidget): def __init__(self, labelText="", position=LEFT, parent=None): super(LabelledTextEdit, self).__init__(parent) self.label = QLabel(labelText) self.textEdit = QTextEdit() self.label.setBuddy(self.textEdit) layout = QBoxLayout(QBoxLayout.LeftToRight if position == LEFT else QBoxLayout.TopToBottom) layout.addWidget(self.label) layout.addWidget(self.textEdit) self.setLayout(layout)class Dialog(QDialog): def __init__(self, address=None, parent=None): super(Dialog, self).__init__(parent) self.street = LabelledLineEdit("&Street:") self.city = LabelledLineEdit("&City:") self.state = LabelledLineEdit("St&ate:") self.zipcode = LabelledLineEdit("&Zipcode:") self.notes = LabelledTextEdit("&Notes:", ABOVE) if address is not None: self.street.lineEdit.setText(address.get("street", "")) self.city.lineEdit.setText(address.get("city", "")) self.state.lineEdit.setText(address.get("state", "")) self.zipcode.lineEdit.setText(address.get("zipcode", "")) self.notes.textEdit.setPlainText(address.get("notes", "")) buttonBox = QDialogButtonBox(QDialogButtonBox.Ok| QDialogButtonBox.Cancel) grid = QGridLayout() grid.addWidget(self.street, 0, 0) grid.addWidget(self.city, 0, 1) grid.addWidget(self.state, 1, 0) grid.addWidget(self.zipcode, 1, 1) grid.addWidget(self.notes, 2, 0, 1, 2) layout = QVBoxLayout() layout.addLayout(grid) layout.addWidget(buttonBox) self.setLayout(layout) buttonBox.accepted.connect(self.accept) buttonBox.rejected.connect(self.reject) self.setWindowTitle("Labelled Widgets")if __name__ == "__main__": fakeAddress = dict(street="3200 Mount Vernon Memorial Highway", city="Mount Vernon", state="Virginia", zipcode="22121") app = QApplication(sys.argv) form = Dialog(fakeAddress) form.show() app.exec_() 運行結果: 這里寫圖片描述


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 家居| 巴东县| 屏山县| 保定市| 兰西县| 大宁县| 株洲市| 乐昌市| 浙江省| 邓州市| 安龙县| 客服| 广河县| 新余市| 个旧市| 密山市| 通化市| 额济纳旗| 克山县| 清原| 尉氏县| 馆陶县| 湾仔区| 湖南省| 清徐县| 通海县| 黎川县| 定日县| 汪清县| 长岛县| 曲水县| 柘城县| 新田县| 库车县| 明星| 宜宾市| 抚松县| 景德镇市| 恩平市| 武胜县| 会理县|