在PyQt上不使用findChild如何访问方法中的小部件?

2024-05-23 18:27:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我是PyQt的新手,我正在做一个类似聊天的应用程序。我初始化了GUI并创建了几个方法来管理用户输入。问题是,我不能利用自我方法()说明如网上教程所示。出于某种原因,Python告诉我object没有属性“WIDGET”,这里的WIDGET是QListWidget。在

我设法用findChild克服了这个问题,但我不确定这是正确的方法。从PyQt的方法中访问小部件的正确方法是什么?在

我的代码是:

import stuff *
class ASIMOV(QWidget):
        def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        QToolTip.setFont(QFont('SansSerif', 12))

        botLog = QListWidget(self)
        botLog.resize(150, 150)

        botInput = QLineEdit(self)
        botInput.returnPressed.connect(self.handleChatInput)

        vbox = QVBoxLayout()
        vbox.addWidget(botLog)
        vbox.addWidget(botInput)

        self.setLayout(vbox)
        self.resize(600, 400)
        self.show()

    def startChat(self, botLog):
        u = ASIMOV_user.User()
        #Greet user
        botLog.addItem('#: Hey there' + u.getName())
        botChat = ASIMOV_chat.Chat()

    def handleChatInput(self):
        u = ASIMOV_user.User()
        print(self.botLog.text())
        botInput = self.findChild(QLineEdit, "")
        botLog = self.findChild(QListWidget, "")
        #lineEdits = self.findChildren(QLineEdit)
        botLog.addItem('#' + u.getName() + ': ' + botInput.text())
        #print(botInput.text())

if __name__=="__main__":
    app = QApplication(sys.argv)
    w = ASIMOV()
    sys.exit(app.exec_())

另外,每次我想访问一个类的方法(比如来自ASIMOV_用户类的getter),我必须初始化一个类吗?在


Tags: 方法text用户selfdefwidgetpyqtuser
1条回答
网友
1楼 · 发布于 2024-05-23 18:27:18

答案由三个菠萝给出。在本例中,原始代码声明了没有self运算符的小部件,这使它们成为本地元素。在

正如他所描述的,它只需要添加自我小工具使它们对应用程序中的其余方法可用。在

原始答案如下:

Store a reference to the widgets when you create them by making them instance attributes (eg self.botInput = QLineEdit(self)). Then you can access them in the same way (self.botInput) from any method of your class. I'd suggest running through some basic tutorials on object oriented programming with Python to become familiar with the concepts you'll need to successfully write GUI programs

相关问题 更多 >