>  Q&A  >  본문

python - PyQt5点击button如何弹出新窗口?

怎么通过点击button,来打开一个新的窗口?
是写在同一个脚本里,还是把新窗口的代码放在另一个脚本里,然后通过点击按钮来运行?

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *

class FirstWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.windowUI()

    def windowUI(self):
        self.setWindowTitle("Login")
        self.textfield()
        self.center()

    def center(self):
        qr = self.frameGeometry()
        cp = QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())

    def textfield(self):
        QToolTip.setFont(QFont('SansSerif', 12))
        user = QLabel("User:")
        userEdit = QLineEdit()
        userEdit.setToolTip("请输入你的帐号")

        passWord = QLabel("PassWord:")
        passWordEdit = QLineEdit()
        passWordEdit.setToolTip("请输入你的密码")

        grid = QGridLayout()
        grid.setSpacing(0)

        grid.addWidget(user, 0, 0)
        grid.addWidget(userEdit, 1, 0)
        grid.addWidget(passWord, 2, 0)
        grid.addWidget(passWordEdit, 3, 0)
        empty = QLabel()
        grid.addWidget(empty, 4, 0)

        btn_logon = QPushButton("Log on")
        btn_quit = QPushButton("Quit")
        grid.addWidget(btn_logon, 5, 0, 1, 2)
        grid.addWidget(btn_quit, 6, 0, 1, 2)

        btn_logon.clicked.connect(self.onclick)
        btn_quit.clicked.connect(quit)

        self.setLayout(grid)

    def onclick(self):
        newWindow = SecondWindow()
        newWindow.show()
        newWindow.exec_()

class SecondWindow(QWidget):
    def __init__(self):
        super().__init__
        self.newWindowUI

    def newWindowUI(self):
        self.resize(300,300)
        self.move(200,200)

if __name__ == "__main__":
    App = QApplication(sys.argv)
    ex = FirstWindow()
    ex.show()
    sys.exit(App.exec_())
黄舟黄舟2741일 전1832

모든 응답(2)나는 대답할 것이다

  • ringa_lee

    ringa_lee2017-04-17 17:55:12

    코드의 양이 많지 않다면 그냥 하나의 파일에 넣어두시면 됩니다. 코드가 많은 경우에는 유지관리의 편의성을 고려하여 두 개의 파일에 넣어두는 것이 이런 이벤트 트리거링과 인터페이스입니다. 스위칭은 일반적으로 신호를 사용합니다. 슬롯으로 만들어 의미가 매우 명확해 보입니다

    으아아아

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-17 17:55:12

    -- 코딩: utf-8 --

    sys 가져오기
    PyQt5.QtWidgets 가져오기 *
    PyQt5.QtCore에서 가져오기 *

    클래스 FirstWindow(QWidget):

    으아아아

    클래스 SecondWindow(QWidget):

    으아아아

    if 이름 == "__main__":

    으아아아

    회신하다
    0
  • 취소회신하다