1

以下のフォーム (「最初のスクリプト」) を別のスクリプト (「2 番目のスクリプト」) から呼び出したいのですが、2 番目のスクリプトでラベル フィールド (おそらく Qlabel の setText プロパティを使用) に新しい情報を入力します。

2 番目のスクリプトの次の 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()
4

1 に答える 1

3

エラーメッセージは、フォームを作成する前に QApplication を作成する必要があることを示しています。基本的に、最初のスクリプトの formm() には、実行する必要があるすべてが含まれています。

  1. QApplication オブジェクトを作成する
  2. 表示するウィジェットを作成する
  3. QApplication::exec() 経由でイベントループに入ります

2 番目のスクリプトのコンテキストでは、これは次のようになります。

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()
于 2013-02-24T19:20:40.573 に答える