我试图编写一个简单的代码,当用户点击按钮时,该代码会将现有的文本小部件更改为另一个。 所以我有
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)
我希望改变我的"你好" to" bye"在我这样做之后:
abutton.clicked.connect(self.myfunc)
但显然这不起作用。并且我已经检查过:removeWidged在函数之外完美地工作(我的第一个想法是,也许,我在函数中做错了),而且函数本身也能正常工作(我通过制作打印东西来检查它曾经点击过按钮,但小部件仍在那里)
我可能做错了什么?感谢。
答案 0 :(得分:1)
你有错字,你在代码中尝试了很多问题的本地变种。这是一个工作示例
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()