python - PyQt5点击button如何弹出新窗口?
黄舟
黄舟 2017-04-17 17:53:12
0
2
1884

怎么通过点击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_())
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全員に返信(2)
左手右手慢动作

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

リーリー
いいねを押す +0
巴扎黑

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

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

クラス FirstWindow(QWidget):

リーリー

クラス SecondWindow(QWidget):

リーリー

if 名前 == "__main__":

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート