我是一個PyQt的新手,我正在做一個像應用程序的小聊天。我初始化了GUI並創建了幾種管理用戶輸入的方法。問題是,我無法使用網上教程中顯示的self.Method()指令。出於某種原因,Python告訴我,對象沒有屬性'WIDGET',這裏的WIDGET是QListWidget。如何在不使用PyQt上的findChild的情況下訪問方法內部的小部件?
我設法克服了使用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_user類干將?
商店小部件引用的概念,當您通過使他們創造他們實例屬性(例如'self.botInput = QLineEdit(self)')。然後你可以用你的類的任何方法以相同的方式訪問它們('self.botInput')。我建議通過一些基於Python的面向對象編程的基本教程來熟悉您需要成功編寫GUI程序的概念。 –
哦,我覺得這很有道理,非常感謝! –