Python PyQt:如何使用按钮替换小部件?
我正在尝试编写一个简单的代码,当用户单击按钮时,它会将现有的文本小部件更改为另一个文本小部件。 所以我有Python PyQt:如何使用按钮替换小部件?,python,widget,pyqt,Python,Widget,Pyqt,我正在尝试编写一个简单的代码,当用户单击按钮时,它会将现有的文本小部件更改为另一个文本小部件。 所以我有 title1=QtGui.QLabel('Hello') title2=QtGui.QLabel('bye') abutton=QtGui.QPushButton('Click me') grid.addWidget(title1,1,5) grid.addWidget(abutton,3,5) 我有一个功能: def myfunc(self): self.grid.rem
title1=QtGui.QLabel('Hello')
title2=QtGui.QLabel('bye')
abutton=QtGui.QPushButton('Click me')
grid.addWidget(title1,1,5)
grid.addWidget(abutton,3,5)
我有一个功能:
def myfunc(self):
self.grid.removeWidget(self.title1)
self.grid.addWidget(title2,1,5)
在我这样做之后,我希望将我的“你好”改为“再见”:
abutton.clicked.connect(self.myfunc)
但显然这不起作用。我已经检查过了:removeWidged在函数之外工作得非常好(我的第一个想法可能是,我在函数中做了一些错误的事情),而且函数本身也可以工作(我通过制作打印内容进行了检查,单击按钮后它就工作了,但小部件仍然存在)
我可能做错了什么?谢谢。您输入了错别字,并尝试使用本地变量,就像代码中的许多问题一样。下面是一个工作示例
from PyQt4 import QtGui, QtCore
import sys
class BASEGUICLS(QtGui.QDialog):
def __init__(self,parent=None):
super(BASEGUICLS, self).__init__(parent)
self.gridLayout = QtGui.QGridLayout()
self.title1=QtGui.QLabel('Hello')
self.title2=QtGui.QLabel('bye')
abutton=QtGui.QPushButton('Click me')
self.gridLayout.addWidget(self.title1,1,5)
self.gridLayout.addWidget(abutton,3,5)
self.setLayout(self.gridLayout)
abutton.clicked.connect(self.myfunc)
def myfunc(self):
self.gridLayout.removeWidget(self.title1)
self.title1.deleteLater()
self.gridLayout.addWidget(self.title2,1,5)
def main():
app = QtGui.QApplication(sys.argv)
ex = BASEGUICLS(None)
ex.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
您的代码中是输入错误title2=QtGui.QLalel('bye')还是仅在这个问题中?(QLalel不是QLabel)它就在这里对不起。我把它作为一个例子贴了出来。UPD:编辑了帖子你确认了当你点击按钮时你的回调被调用了吗?这是什么意思?你能给我举个例子吗,我对PyQt不是很好,我昨天第一次遇到它。哦,我的意思是,如果你在myfunc函数中添加一个print语句,它会被打印吗?我试着运行这个函数,它会做些什么。。。但它只是删除了小部件,而没有创建新的小部件:(你的意思是它做了些什么?。它会创建一个新的。你会看到Hello将被删除,Bye将被添加到网格布局的同一位置。如果我得到正确的答案,这就是你想要的,对吗?