ホームページ  >  に質問  >  本文

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日前1831

全員に返信(2)返信します

  • ringa_lee

    ringa_lee2017-04-17 17:55:12

    コードの量が多くない場合は、1 つのファイルにまとめます。コードが多い場合は、メンテナンスの都合を考慮して、2 つのファイルにまとめた方がよいでしょう。この種のイベントトリガーとインターフェイスは、スイッチングは通常シグナルを使用します - スロットによって作成され、セマンティクスは非常に明確に見えます

    リーリー

    返事
    0
  • 巴扎黑

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

    -- コーディング: utf-8 --

    import sys
    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import *

    クラス FirstWindow(QWidget):

    リーリー

    クラス SecondWindow(QWidget):

    リーリー

    if 名前 == "__main__":

    リーリー

    返事
    0
  • キャンセル返事