• 2016/7/20 1:14:45 PyQT5 实现点击隐藏,展开效果


    2016/7/20 1:14:45
    code
    1. #!/usr/bin/env python
    2. #############################################################################
    3. ##
    4. ## Copyright (C) 2013 Riverbank Computing Limited.
    5. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    6. ## All rights reserved.
    7. ##
    8. ## This file is part of the examples of PyQt.
    9. ##
    10. ## $QT_BEGIN_LICENSE:BSD$
    11. ## You may use this file under the terms of the BSD license as follows:
    12. ##
    13. ## "Redistribution and use in source and binary forms, with or without
    14. ## modification, are permitted provided that the following conditions are
    15. ## met:
    16. ## * Redistributions of source code must retain the above copyright
    17. ## notice, this list of conditions and the following disclaimer.
    18. ## * Redistributions in binary form must reproduce the above copyright
    19. ## notice, this list of conditions and the following disclaimer in
    20. ## the documentation and/or other materials provided with the
    21. ## distribution.
    22. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
    23. ## the names of its contributors may be used to endorse or promote
    24. ## products derived from this software without specific prior written
    25. ## permission.
    26. ##
    27. ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    28. ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    29. ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    30. ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
    31. ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    32. ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    33. ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    34. ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    35. ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    36. ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    37. ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
    38. ## $QT_END_LICENSE$
    39. ##
    40. #############################################################################
    41. from PyQt5.QtCore import Qt
    42. from PyQt5.QtWidgets import (QApplication, QCheckBox, QDialog,
    43. QDialogButtonBox, QGridLayout, QHBoxLayout, QLabel, QLayout, QLineEdit,
    44. QPushButton, QVBoxLayout, QWidget)
    45. class FindDialog(QDialog):
    46. def __init__(self, parent=None):
    47. super(FindDialog, self).__init__(parent)
    48. label = QLabel("Find &what:")
    49. lineEdit = QLineEdit()
    50. label.setBuddy(lineEdit)
    51. caseCheckBox = QCheckBox("Match &case")
    52. fromStartCheckBox = QCheckBox("Search from &start")
    53. fromStartCheckBox.setChecked(True)
    54. findButton = QPushButton("&Find")
    55. findButton.setDefault(True)
    56. moreButton = QPushButton("&More")
    57. moreButton.setCheckable(True)
    58. moreButton.setAutoDefault(False)
    59. extension = QWidget()
    60. wholeWordsCheckBox = QCheckBox("&Whole words")
    61. backwardCheckBox = QCheckBox("Search &backward")
    62. searchSelectionCheckBox = QCheckBox("Search se&lection")
    63. buttonBox = QDialogButtonBox(Qt.Vertical)
    64. buttonBox.addButton(findButton, QDialogButtonBox.ActionRole)
    65. buttonBox.addButton(moreButton, QDialogButtonBox.ActionRole)
    66. moreButton.toggled.connect(extension.setVisible)
    67. extensionLayout = QVBoxLayout()
    68. extensionLayout.setContentsMargins(0, 0, 0, 0)
    69. extensionLayout.addWidget(wholeWordsCheckBox)
    70. extensionLayout.addWidget(backwardCheckBox)
    71. extensionLayout.addWidget(searchSelectionCheckBox)
    72. extension.setLayout(extensionLayout)
    73. topLeftLayout = QHBoxLayout()
    74. topLeftLayout.addWidget(label)
    75. topLeftLayout.addWidget(lineEdit)
    76. leftLayout = QVBoxLayout()
    77. leftLayout.addLayout(topLeftLayout)
    78. leftLayout.addWidget(caseCheckBox)
    79. leftLayout.addWidget(fromStartCheckBox)
    80. mainLayout = QGridLayout()
    81. #关键性的参数设置
    82. mainLayout.setSizeConstraint(QLayout.SetFixedSize)
    83. mainLayout.addLayout(leftLayout, 0, 0)
    84. mainLayout.addWidget(buttonBox, 0, 1)
    85. mainLayout.addWidget(extension, 1, 0, 1, 2)
    86. mainLayout.setRowStretch(2, 1)
    87. self.setLayout(mainLayout)
    88. self.setWindowTitle("Extension")
    89. extension.hide()
    90. if __name__ == '__main__':
    91. import sys
    92. app = QApplication(sys.argv)
    93. dialog = FindDialog()
    94. dialog.show()
    95. sys.exit(app.exec_())





  • 相关阅读:
    【Azure 应用服务】App Service中运行Python 编写的 Jobs,怎么来安装Python包 (pymssql)呢?
    【Azure 存储服务】使用POST方式向Azure Storage Queue中插入Message的办法
    【Azure Developer】使用Azure Resource Graph的查询语法的示例
    img标签到底是行内元素还是块级元素
    [前端面试]前端缓存问题看这篇,让面试官爱上你
    Vue3.0 响应式数据原理:ES6 Proxy
    几行代码教你解决微信生成海报及二维码
    冷门的HTML
    HTML选择器
    程序猿必备 代码保平安
  • 原文地址:https://www.cnblogs.com/topshooter/p/5844850.html
Copyright © 2020-2023  润新知