无法在PyQt4中打开多个帧

时间:2015-07-23 02:58:32

标签: python pyqt4

一旦使用Python PyQt库单击一个按钮,我就会尝试打开一个新窗口。目前,我可以在我的框架中创建两个按钮但是我无法单击第一个按钮,它应该打开一个新窗口并隐藏我的第一个窗口。我在那里创建了一个后退按钮,让它回到我的第一个窗口。任何人都可以帮助教我如何创建一个新窗口并使用按钮单击打开一个新窗口。

这是我的Python代码:

class Window(QtGui.QMainWindow):

def __init__(self):
    super(Window, self).__init__()


    self.setGeometry(300, 300, 600, 400)
    self.setWindowTitle("Testing Window")
    # self.setWindowIcon(QtGui.QIcon(''))
    self.home()

def home(self):

    btn = QtGui.QPushButton("QR Code", self)
    btn.clicked.connect(self.qr)

    btn.resize(100, 100)
    btn.move(100, 100)

    btn1 = QtGui.QPushButton("Face Recognition", self)
    btn1.clicked.connect(QtCore.QCoreApplication.instance().quit)

    btn1.resize(200, 100)
    btn1.move(300, 100)


    self.show()

def qr(self):
    backbtn = QtGui.QPushButton("Back" , self)
    backbtn.clicked.connect(self.home)

    backbtn.resize(100, 100)
    backbtn.move(100, 100)

    self.show()

def run():
    app = QtGui.QApplication(sys.argv)
    GUI = Window()
    # GUI1 = QRCode()
    sys.exit(app.exec_())

run()

1 个答案:

答案 0 :(得分:0)

您的代码中只有一个窗口,即您使用GUI=Window()实例化的窗口。

您的函数qr不会创建新窗口,它:

  • 在同一窗口上创建第三个按钮
  • 尝试显示窗口,因为窗口已经显示,所以窗口无效。第三个按钮没有出现,因为它是在第一次调用self.show()
  • 之后创建的

要点击按钮打开新窗口,请参阅this answer。您可以使用hide()作为第一个窗口。

在旁注中,对于基本的GUI,您不需要QMainWindow,简单的QWidget将正常工作。此外,您可能希望查看布局而不是绝对定位。