我是Python的新手,我已经习惯了java。我在使用其他对象修改PyQt对象属性方面遇到了麻烦。 目前,我试图在测试代码中完成这项工作,但我不知道。 我希望当我点击PushButton时,分配给label1的文本会发生变化。
import sys
from PyQt4 import QtGui, QtCore
from functools import partial
class Window(QtGui.QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.setGeometry(50, 50, 500, 300)
self.setWindowTitle("PyQT tuts!")
self.setWindowIcon(QtGui.QIcon('pythonlogo.png'))
extractAction = QtGui.QAction("&GET TO THE CHOPPAH!!!", self)
extractAction.setShortcut("Ctrl+Q")
extractAction.setStatusTip('Leave The App')
extractAction.triggered.connect(self.close_application)
self.statusBar()
mainMenu = self.menuBar()
fileMenu = mainMenu.addMenu('&File')
fileMenu.addAction(extractAction)
self.home()
def home(self):
btn = QtGui.QPushButton("Quit", self)
btn.clicked.connect(self.close_application)
btn.resize(btn.minimumSizeHint())
btn.move(0,100)
extractAction = QtGui.QAction(QtGui.QIcon('todachoppa.png'), 'Flee the Scene', self)
extractAction.triggered.connect(self.close_application)
self.toolBar = self.addToolBar("Extraction")
self.toolBar.addAction(extractAction)
checkBox = QtGui.QCheckBox('Enlarge Window', self)
checkBox.move(100, 25)
checkBox.stateChanged.connect(self.enlarge_window)
checkBox1 = QtGui.QCheckBox("CheckTest1", self)
checkBox1.move(200,50)
#checkBox1.stateChanged.connect(self.labeltext())
self.pushButton = QtGui.QPushButton("Click", self)
self.pushButton.move(250,50)
self.pushButton.clicked.connect(partial(self.labeltext, "It Worked!"))
label1 = QtGui.QLabel("Label original", self)
label1.move(300,100)
# depending on what you want the default to be.
#checkBox.toggle()
self.show()
def labeltext(self, text):
self.label1.setText(text)
def enlarge_window(self, state):
if state == QtCore.Qt.Checked:
self.setGeometry(50,50, 1000, 600)
else:
self.setGeometry(50, 50, 500, 300)
def close_application(self):
choice = QtGui.QMessageBox.question(self, 'Extract!',
"Get into the chopper?",
QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
if choice == QtGui.QMessageBox.Yes:
print("Extracting Naaaaaaoooww!!!!")
sys.exit()
else:
pass
def cambiar_label(self, state):
if state == QtCore.Qt.Checked:
self.label1.SetText("label new")
else:
self.label1.SetText("label original")
def run():
app = QtGui.QApplication(sys.argv)
GUI = Window()
sys.exit(app.exec_())
run()
答案 0 :(得分:0)
label1 = QtGui.QLabel("Label original", self)
label1.move(300,100)
在实例方法内创建的变量不会自动成为该对象的属性。您需要专门将它们指定为self
的属性。如果您希望能够在其他实例方法中访问这些值,这一点尤其重要。
尝试将这些行更改为:
self.label1 = QtGui.QLabel("Label original", self)
self.label1.move(300,100)