分享

pyqt:点击按键打开新/子窗口的两种方法

 大傻子的文渊阁 2022-11-26 发布于浙江

方法一

在主函数中,将点击按键的动作关联到子函数的show函数。

代码示例 

  1. from PyQt5.QtWidgets import *
  2. import sys
  3. class MainWindow(QWidget):
  4. def __init__(self):
  5. super().__init__()
  6. self.initUI()
  7. def initUI(self):
  8. # 设置窗口标题和大小
  9. self.setWindowTitle('TestWindow')
  10. self.resize(400, 300)
  11. self.collec_btn = QPushButton('打开新窗口', self)
  12. layout = QVBoxLayout()
  13. layout.addWidget(self.collec_btn)
  14. self.setLayout(layout)
  15. self.show()
  16. class NewWindow(QWidget):
  17. def __init__(self):
  18. super().__init__()
  19. self.setWindowTitle('新窗口')
  20. self.resize(280, 230)
  21. if __name__ == '__main__':
  22. app = QApplication(sys.argv)
  23. # 创建窗口
  24. window = MainWindow()
  25. newWin = NewWindow()
  26. # 显示窗口
  27. window.show()
  28. window.collec_btn.clicked.connect(newWin.show)
  29. # 运行应用,并监听事件
  30. sys.exit(app.exec_())

 运行结果

方法二

在父窗口的类中, 定义一个专门的函数,用于打开子窗口。然后把点击按键的动作关联到该函数。

代码示例

  1. from PyQt5.QtCore import *
  2. from PyQt5.QtWidgets import *
  3. import sys
  4. class ChildWindow(QDialog):
  5. def __init__(self):
  6. super().__init__()
  7. self.initUI()
  8. def initUI(self):
  9. self.setWindowFlags(Qt.WindowCloseButtonHint)
  10. self.setWindowTitle('子窗口')
  11. self.resize(280, 230)
  12. class FatherWindow(QWidget):
  13. def __init__(self):
  14. super().__init__()
  15. self.initUI()
  16. def initUI(self):
  17. # 设置窗口标题和大小
  18. self.setWindowTitle('TestWindow')
  19. self.resize(400, 300)
  20. self.btn = QPushButton('打开新窗口', self)
  21. self.btn.clicked.connect(self.btnClicked)
  22. layout = QVBoxLayout()
  23. layout.addWidget(self.btn)
  24. self.setLayout(layout)
  25. self.show()
  26. def btnClicked(self):
  27. self.chile_Win = ChildWindow()
  28. self.chile_Win.show()
  29. self.chile_Win.exec_()
  30. if __name__ == '__main__':
  31. app = QApplication(sys.argv)
  32. # 创建主窗口
  33. window = FatherWindow()
  34. # 显示窗口
  35. window.show()
  36. # 运行应用,并监听事件
  37. sys.exit(app.exec_())

运行结果

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多