首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyQt连接() NameError

PyQt连接() NameError
EN

Stack Overflow用户
提问于 2022-03-12 19:37:07
回答 1查看 65关注 0票数 -1

我正在学习如何正确地使用PyQt。

试图使用打印一行的按钮创建一个窗口类。

代码语言:javascript
复制
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,

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

发布于 2022-03-12 21:27:06

我没有正确地引用这个方法。当调用self.button.clicked.connect(buttonClicked)时。

需要的是self.button.clicked.connect(self.buttonClicked)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71452582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档