国产探花免费观看_亚洲丰满少妇自慰呻吟_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_() 運行結果: 這里寫圖片描述


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 曲松县| 涪陵区| 呼图壁县| 宝兴县| 登封市| 宜城市| 万载县| 临洮县| 兴文县| 邢台县| 金川县| 安泽县| 南平市| 南阳市| 胶州市| 德安县| 北安市| 磴口县| 兰坪| 若尔盖县| 新余市| 杭州市| 台江县| 乌拉特后旗| 巴东县| 蛟河市| 临桂县| 秦安县| 旅游| 土默特右旗| 大姚县| 天气| 渭源县| 嘉祥县| 平南县| 罗城| 栖霞市| 南澳县| 垣曲县| 乐清市| 铁力市|