我正在学习如何正确地使用PyQt。
试图使用打印一行的按钮创建一个窗口类。
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot
class Window:
def __init__(self, args):
#initializes PyQt
self.app = QApplication(args)
self.widget = QWidget()
self.widget.setWindowTitle("PyQt5 Example")
#create label
self.textLabel = QLabel(self.widget)
self.textLabel.setText("Hello World!")
self.textLabel.move(110,85)
#create button
self.button = QPushButton(self.widget)
self.button.setText("Click me!")
self.button.move(64,32)
#connect button to a method
self.button.clicked.connect(buttonClicked)
#set starting position on monitor (50, 50) and window size (320, 200)
self.widget.setGeometry(50,50,320,200)
#show window
self.widget.show()
sys.exit(app.exec_())
def buttonClicked(self):
print("Button clicked!")
if __name__ == '__main__':
print(sys.argv)
app = Window(sys.argv)当我运行我得到的代码时,NameError: name 'buttonClicked' is not defined
反复检查所有缩进和对象语法,我不清楚是什么问题。更奇怪的是,此类语法在类之外完全正常工作。
例如,以下代码不返回NameError,
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot
def window():
app = QApplication(sys.argv)
widget = QWidget()
button1 = QPushButton(widget)
button1.setText("Button1")
button1.move(64,32)
button1.clicked.connect(button1_clicked)
button2 = QPushButton(widget)
button2.setText("Button2")
button2.move(64,64)
button2.clicked.connect(button2_clicked)
widget.setGeometry(50,50,320,200)
widget.setWindowTitle("PyQt5 Button Click Example")
widget.show()
sys.exit(app.exec_())
def button1_clicked():
print("Button 1 clicked")
def button2_clicked():
print("Button 2 clicked")
if __name__ == '__main__':
window()发布于 2022-03-12 21:27:06
我没有正确地引用这个方法。当调用self.button.clicked.connect(buttonClicked)时。
需要的是self.button.clicked.connect(self.buttonClicked)
https://stackoverflow.com/questions/71452582
复制相似问题