pyqt4按钮点击事件开启新frame/window
pyqt4 button click event open new frame/window
我是 Python GUI 编程的新手。目前我正在尝试创建按钮,一旦我点击它,它应该打开一个新的 window/frame。
这是我的 python GUI 代码:
class Window(QtGui.QMainWindow):
def __init__(self):
super(Window, self).__init__()
palette = QPalette()
palette.setBrush(QPalette.Background,QBrush(QPixmap("blue-gradient-2.jpg")))
self.setPalette(palette)
self.setGeometry(300, 300, 600, 400)
self.setWindowTitle("Testing Window")
# self.setWindowIcon(QtGui.QIcon(''))
self.home()
def qr(self):
backbtn = QtGui.QPushButton("Back" , self)
backbtn.clicked.connect(home)
backbtn.resize(100, 100)
backbtn.move(100, 100)
self.show()
def home(self):
btn = QtGui.QPushButton("QR Code", self)
btn.clicked.connect(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 run():
app = QtGui.QApplication(sys.argv)
GUI = Window()
sys.exit(app.exec_())
run()
实际上,这段代码是我从教程中获取的。我看到连 Tkinter 都可以打开一个新的 window/frame。但是PyQt开新没有教程window/frame.
我得到的错误是:
Traceback (most recent call last):
File "pyqt.py", line 47, in <module>
run()
File "pyqt.py", line 44, in run
GUI = Window()
File "pyqt.py", line 16, in __init__
self.home()
File "pyqt.py", line 28, in home
btn.clicked.connect(qr)
NameError: global name 'qr' is not defined
我相信应该有适当的方法来处理这个错误。
您的问题是,您没有定义全局函数qr()
。但是因为你已经定义了一个同名的方法,我怀疑你的意图是做
btn.clicked.connect(self.qr)
您的 qr
方法中的 home()
也是如此
backbtn.clicked.connect(self.home)
要使用 PyQt4 打开一个新的 window,就像在没有父级的小部件上调用 widget.show()
一样简单。
我是 Python GUI 编程的新手。目前我正在尝试创建按钮,一旦我点击它,它应该打开一个新的 window/frame。
这是我的 python GUI 代码:
class Window(QtGui.QMainWindow):
def __init__(self):
super(Window, self).__init__()
palette = QPalette()
palette.setBrush(QPalette.Background,QBrush(QPixmap("blue-gradient-2.jpg")))
self.setPalette(palette)
self.setGeometry(300, 300, 600, 400)
self.setWindowTitle("Testing Window")
# self.setWindowIcon(QtGui.QIcon(''))
self.home()
def qr(self):
backbtn = QtGui.QPushButton("Back" , self)
backbtn.clicked.connect(home)
backbtn.resize(100, 100)
backbtn.move(100, 100)
self.show()
def home(self):
btn = QtGui.QPushButton("QR Code", self)
btn.clicked.connect(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 run():
app = QtGui.QApplication(sys.argv)
GUI = Window()
sys.exit(app.exec_())
run()
实际上,这段代码是我从教程中获取的。我看到连 Tkinter 都可以打开一个新的 window/frame。但是PyQt开新没有教程window/frame.
我得到的错误是:
Traceback (most recent call last):
File "pyqt.py", line 47, in <module>
run()
File "pyqt.py", line 44, in run
GUI = Window()
File "pyqt.py", line 16, in __init__
self.home()
File "pyqt.py", line 28, in home
btn.clicked.connect(qr)
NameError: global name 'qr' is not defined
我相信应该有适当的方法来处理这个错误。
您的问题是,您没有定义全局函数qr()
。但是因为你已经定义了一个同名的方法,我怀疑你的意图是做
btn.clicked.connect(self.qr)
您的 qr
方法中的 home()
也是如此
backbtn.clicked.connect(self.home)
要使用 PyQt4 打开一个新的 window,就像在没有父级的小部件上调用 widget.show()
一样简单。