Форум сайта python.su
в Qt Designer есть такая полезная опция “изменение сигналов/слотов”.
Офлайн
Здравствуйте, столкнулся с проблемой указанной в заголовке, тему прочитал, но не очень понял. Например, у меня имеется простая форма с кнопкой и лейблом, нарисованная в дизайнере, переведенная на питон. Дополните пожалуйста код таким образом, чтобы по нажатию на кнопку, в лейбл добавлялось, например ‘Hello World’. А дальше попытаюсь сам сориентироваться. Заранее спасибо.
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName(_fromUtf8("Form"))
Form.resize(400, 300)
self.pushButton = QtGui.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(20, 110, 97, 27))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.label = QtGui.QLabel(Form)
self.label.setGeometry(QtCore.QRect(30, 60, 67, 17))
self.label.setObjectName(_fromUtf8("label"))
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
Form.setWindowTitle(QtGui.QApplication.translate("Form", "Form", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton.setText(QtGui.QApplication.translate("Form", "PushButton", None, QtGui.QApplication.UnicodeUTF8))
self.label.setText(QtGui.QApplication.translate("Form", "TextLabel", None, QtGui.QApplication.UnicodeUTF8))
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Form = QtGui.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
Отредактировано (Авг. 26, 2011 20:51:02)
Офлайн
Вот:
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName(_fromUtf8("Form"))
Form.resize(400, 300)
self.pushButton = QtGui.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(20, 110, 97, 27))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.label = QtGui.QLabel(Form)
self.label.setGeometry(QtCore.QRect(30, 60, 67, 17))
self.label.setObjectName(_fromUtf8("label"))
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
self.pushButton.clicked.connect(self.slotPushButtonPress)
def retranslateUi(self, Form):
Form.setWindowTitle(QtGui.QApplication.translate("Form", "Form", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton.setText(QtGui.QApplication.translate("Form", "PushButton", None, QtGui.QApplication.UnicodeUTF8))
self.label.setText(QtGui.QApplication.translate("Form", "TextLabel", None, QtGui.QApplication.UnicodeUTF8))
def slotPushButtonPress(self):
self.label.setText('my text')
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Form = QtGui.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
Отредактировано (Авг. 27, 2011 13:24:40)
Офлайн
Вот недавно такая книга появилась. Скоро обещают бумажную версию.
http://yaslil.com/201107136793/pyqt-sozdanie-okonnih-prilojenii-na-python-3-prohorenok-n-a-skachat-knigu-besplatno.html
Офлайн
mks
Большое спасибо!
Rodegast
И вам спасибо! Кажется это именно то, что мне нужно.
А вообще, стоит пользоваться дизайнером, или лучше писать гуи руками?
Офлайн
> стоит пользоваться дизайнером, или лучше писать гуи руками?
Руками вы много не напишите.
Офлайн
Rodegast
А не подскажите, существует какая-нибудь IDE с автодополнением кода QT, которая будет подсказывать свойства объектов, чтобы я, например, написал slider. а он выкинул список с его свойствами setRange, setValue и т.д?
Офлайн
я пользуюсь eric ide, в ней удобно работать с pyqt. Можно ли туда прикрутить автодополнение не знаю. Посмотрите учебники у них на сайте http://eric-ide.python-projects.org/eric-tutorials.html
Офлайн
mks
Хорошо, присмотрюсь к нему.
Не могли бы вы еще подсказать по предыдущему моему коду: я добавил textEdit и теперь пытаюсь по нажатию кнопки вывести из него текст в label, но что-то не получается. Делаю вот так:
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName(_fromUtf8("Form"))
Form.resize(400, 300)
self.pushButton = QtGui.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(230, 30, 97, 27))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.textEdit = QtGui.QTextEdit(Form)
self.textEdit.setGeometry(QtCore.QRect(50, 30, 131, 31))
self.textEdit.setObjectName(_fromUtf8("textEdit"))
self.label = QtGui.QLabel(Form)
self.label.setGeometry(QtCore.QRect(60, 80, 67, 17))
self.label.setObjectName(_fromUtf8("label"))
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
self.pushButton.clicked.connect(self.slotPushButtonPress)
def retranslateUi(self, Form):
Form.setWindowTitle(QtGui.QApplication.translate("Form", "Form", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton.setText(QtGui.QApplication.translate("Form", "PushButton", None, QtGui.QApplication.UnicodeUTF8))
self.label.setText(QtGui.QApplication.translate("Form", "TextLabel", None, QtGui.QApplication.UnicodeUTF8))
def slotPushButtonPress(self):
self.connect(textEdit, Qt.SIGNAL("textChanged()"), label.setText)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Form = QtGui.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
Офлайн
Например так:
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName(_fromUtf8("Form"))
Form.resize(400, 300)
self.pushButton = QtGui.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(230, 30, 97, 27))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.textEdit = QtGui.QTextEdit(Form)
self.textEdit.setGeometry(QtCore.QRect(50, 30, 131, 31))
self.textEdit.setObjectName(_fromUtf8("textEdit"))
self.label = QtGui.QLabel(Form)
self.label.setGeometry(QtCore.QRect(60, 80, 67, 17))
self.label.setObjectName(_fromUtf8("label"))
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
self.pushButton.clicked.connect(self.slotPushButtonPress)
def retranslateUi(self, Form):
Form.setWindowTitle(QtGui.QApplication.translate("Form", "Form", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton.setText(QtGui.QApplication.translate("Form", "PushButton", None, QtGui.QApplication.UnicodeUTF8))
self.label.setText(QtGui.QApplication.translate("Form", "TextLabel", None, QtGui.QApplication.UnicodeUTF8))
def slotPushButtonPress(self):
#self.connect(textEdit, Qt.SIGNAL("textChanged()"), label.setText)
self.label.setText(self.textEdit.toPlainText())
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Form = QtGui.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
Офлайн