Python PyQt,如何连接按钮?

Python PyQt,如何连接按钮?,python,pyqt5,Python,Pyqt5,我有一个登录表单,我想将按钮连接到另一个窗口。这是我的代码,但当我运行它时,它会显示登录窗口,但在我单击按钮后,下一个窗口只会显示一会儿。我看了很多遍都没成功 class Login(QMainWindow): def __init__(self): super().__init__() self.setGeometry(750, 350, 400, 225) self.setWindowTitle('Login')

我有一个登录表单,我想将按钮连接到另一个窗口。这是我的代码,但当我运行它时,它会显示登录窗口,但在我单击按钮后,下一个窗口只会显示一会儿。我看了很多遍都没成功

class Login(QMainWindow):
      def __init__(self):
          super().__init__()

          self.setGeometry(750, 350, 400, 225)
          self.setWindowTitle('Login')

          #stuff right here

          self.tombol = QPushButton('Login', self)
          self.tombol.setGeometry(225, 150, 101, 23)
          self.tombol.clicked.connect(Main)
          self.show()

 class Main(QMainWindow):
      def __init__(self):
          super().__init__()

          self.setGeometry(750, 350, 400, 150)
          self.setWindowTitle('Hasil Pilkada')

          #stuff right here too

          self.show()

问题很简单:Main是在有限的范围内创建的,所以过一会儿它就会被消除,所以窗口只在一瞬间出现

目标可以改写为:当按下按钮时,必须显示另一个窗口,对于用户来说,它与是否在窗口之前创建无关,而只是显示

class Login(QMainWindow):
      def __init__(self):
          super().__init__()

          self.other_window = Main()

          self.setGeometry(750, 350, 400, 225)
          self.setWindowTitle('Login')

          #stuff right here

          self.tombol = QPushButton('Login', self)
          self.tombol.setGeometry(225, 150, 101, 23)
          self.tombol.clicked.connect(self.other_window.show)
          self.show()

 class Main(QMainWindow):
      def __init__(self):
          super().__init__()

          self.setGeometry(750, 350, 400, 150)
          self.setWindowTitle('Hasil Pilkada')

          #stuff right here too

          # self.show()
类登录(QMainWindow):
定义初始化(自):
super()。\uuuu init\uuuuu()
self.other_window=Main()
自身设置几何体(750350400225)
self.setWindowTitle('Login')
#就在这里
self.tombol=QPushButton('Login',self)
self.tombol.setGeometry(225、150、101、23)
self.tombol.clicked.connect(self.other\u window.show)
self.show()
类主(QMainWindow):
定义初始化(自):
super()。\uuuu init\uuuuu()
自设置几何体(750350400150)
self.setWindowTitle('Hasil Pilkada')
#这里也有东西
#self.show()
如果创建并显示窗口,另一种方式是:

class Login(QMainWindow):
      def __init__(self):
          super().__init__()

          self.setGeometry(750, 350, 400, 225)
          self.setWindowTitle('Login')

          #stuff right here

          self.tombol = QPushButton('Login', self)
          self.tombol.setGeometry(225, 150, 101, 23)
          self.tombol.clicked.connect(self.handle_clicked)
          self.show()

    def handle_clicked(self):
        if not hasattr(self, "other_window"):
            self.other_window = Main()
        self.other_window.show()
类登录(QMainWindow):
定义初始化(自):
super()。\uuuu init\uuuuu()
自身设置几何体(750350400225)
self.setWindowTitle('Login')
#就在这里
self.tombol=QPushButton('Login',self)
self.tombol.setGeometry(225、150、101、23)
self.tombol.clicked.connect(self.handle\u clicked)
self.show()
已单击def句柄(自身):
如果不是HASTATR(自我,“其他窗口”):
self.other_window=Main()

self.other_window.show()
问题很简单:Main是在有限的范围内创建的,因此稍后它将被消除,因此窗口可以在一瞬间看到

目标可以改写为:当按下按钮时,必须显示另一个窗口,对于用户来说,它与是否在窗口之前创建无关,而只是显示

class Login(QMainWindow):
      def __init__(self):
          super().__init__()

          self.other_window = Main()

          self.setGeometry(750, 350, 400, 225)
          self.setWindowTitle('Login')

          #stuff right here

          self.tombol = QPushButton('Login', self)
          self.tombol.setGeometry(225, 150, 101, 23)
          self.tombol.clicked.connect(self.other_window.show)
          self.show()

 class Main(QMainWindow):
      def __init__(self):
          super().__init__()

          self.setGeometry(750, 350, 400, 150)
          self.setWindowTitle('Hasil Pilkada')

          #stuff right here too

          # self.show()
类登录(QMainWindow):
定义初始化(自):
super()。\uuuu init\uuuuu()
self.other_window=Main()
自身设置几何体(750350400225)
self.setWindowTitle('Login')
#就在这里
self.tombol=QPushButton('Login',self)
self.tombol.setGeometry(225、150、101、23)
self.tombol.clicked.connect(self.other\u window.show)
self.show()
类主(QMainWindow):
定义初始化(自):
super()。\uuuu init\uuuuu()
自设置几何体(750350400150)
self.setWindowTitle('Hasil Pilkada')
#这里也有东西
#self.show()
如果创建并显示窗口,另一种方式是:

class Login(QMainWindow):
      def __init__(self):
          super().__init__()

          self.setGeometry(750, 350, 400, 225)
          self.setWindowTitle('Login')

          #stuff right here

          self.tombol = QPushButton('Login', self)
          self.tombol.setGeometry(225, 150, 101, 23)
          self.tombol.clicked.connect(self.handle_clicked)
          self.show()

    def handle_clicked(self):
        if not hasattr(self, "other_window"):
            self.other_window = Main()
        self.other_window.show()
类登录(QMainWindow):
定义初始化(自):
super()。\uuuu init\uuuuu()
自身设置几何体(750350400225)
self.setWindowTitle('Login')
#就在这里
self.tombol=QPushButton('Login',self)
self.tombol.setGeometry(225、150、101、23)
self.tombol.clicked.connect(self.handle\u clicked)
self.show()
已单击def句柄(自身):
如果不是HASTATR(自我,“其他窗口”):
self.other_window=Main()
self.other_window.show()