• 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_())





  • 相关阅读:
    DirectShow自带实例StillCap在回调函数里实现抓图并保存为文件
    x264 VS2008下编译成功
    yuy2_to_i420,yuyv_to_i420
    x264源码阅读
    oracle 归档日志开启、关闭及删除归档日志
    TOMCAT设置JVM
    linux root 操作oracle命令
    struts2 标签判断list是否为空
    linux下mysql 5.5配置
    RHEL 6 下VNC Server 的安装配置
  • 原文地址:https://www.cnblogs.com/topshooter/p/5844850.html
Copyright © 2020-2023  润新知