Я хочу вызвать форму ниже («Первый скрипт») из другого сценария («Второй скрипт»), и я хочу, чтобы второй скрипт заполнил поле метки (предположительно, используя свойство setText Qlabel) с новой информацией.QWidget: должен построить QApplication перед QPaintDevice в сценарии Python
Следующие 7 строк во втором скрипте сначала создают исходное окно без обновленного ярлыка; но после закрытия не обновленного окна появляется новое окно с обновленной меткой. Я не знаю, почему сначала отображается не обновленное окно.
import Form2use4ques4stackoverflow_2013_02_23_am_09_33_45_
app = QApplication(sys.argv)
nuform = Form2use4ques4stackoverflow_2013_02_23_am_09_33_45_.Form()
nuform.prefix_label.setText('newtext')
nuform.show()
#return app.exec_()
app.exec_()
Marc
# -*- coding: latin-1 -*-
"""
Form2use4ques4stackoverflow_2013_02_23_am_09_33_45_.py
"""
import sys
from PyQt4 import QtCore
from PyQt4 import QtGui
from PyQt4.QtCore import (Qt, SIGNAL)
from PyQt4.QtGui import (QApplication, QDialog, QHBoxLayout, QLabel,
QPushButton)
class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
self.initUI()
def initUI(self):
okButton01 = QtGui.QPushButton("OK")
cancelButton01 = QtGui.QPushButton("Cancel")
prefix_label = QtGui.QLabel('Prefix')
self. prefix_label = prefix_label
hbox_prefix_digit_iterations = QtGui.QHBoxLayout()
hbox_prefix_digit_iterations.addWidget(prefix_label)
hbox_btnsOK_cancel = QtGui.QHBoxLayout()
hbox_btnsOK_cancel.addStretch(1)
hbox_btnsOK_cancel.addWidget(okButton01)
hbox_btnsOK_cancel.addWidget(cancelButton01)
vbox0 = QtGui.QVBoxLayout()
vbox0.addLayout(hbox_prefix_digit_iterations)
vbox0.addStretch(1)
vbox0.addLayout(hbox_btnsOK_cancel)
self.setLayout(vbox0)
self.setGeometry(300, 300, 600, 300) #class PySide.QtCore.QRectF(left, top, width, height) http://srinikom.github.com/pyside-docs/PySide/QtCore/QRectF.html#PySide.QtCore.QRectF
self.setWindowTitle('Duplicate Code Strings W/Increasing Numbers')
self.show()
def formm():
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()
if 1 == 1:
formm()
Спасибо. Когда я попробовал код, который вы отправили, я получил сообщение об ошибке «неверное синтаксическое сообщение» для последней строки. Я попытался изменить «app.exec()» на «app.exec_()», но это сгенерировало это сообщение об ошибке: «SyntaxError:« return »вне функции« Есть ли у вас какие-либо идеи о том, как решить эту проблему? Еще раз спасибо, marc – user235218
Дорогой Франк Остерфилд, я забыл указать ваше имя в своем ответе. Спасибо. Когда я попробовал код, который вы отправили, я получил сообщение об ошибке «неверное синтаксическое сообщение» для последней строки. Я попытался изменить «app.exec()» на «app.exec_()», но это сгенерировало это сообщение об ошибке: «SyntaxError:« return »вне функции« Есть ли у вас какие-либо идеи о том, как решить эту проблему? Еще раз спасибо, marc – user235218
Форма появилась после того, как я сменил exec на exec_ и запомнил импорт модулей qt. Но ярлык не обновляется. Теперь сообщение об ошибке: AttributeError: объект 'Form' не имеет атрибута 'prefix_label' – user235218