0

qtdesigner を使用して gui フォームを作成し、pyuic4 を使用して python コードに変換しました。私のメインスクリプトのサンプルは次のとおりです。

#!/usr/bin/env python

from PyQt4 import QtGui
from multibootusb_ui import Ui_Dialog
import sys
import os
import another_file_function
class AppGui(QtGui.QDialog,Ui_Dialog):

    def __init__(self):
        QtGui.QDialog.__init__(self)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.ui.close.clicked.connect(self.close)
        another_file_function.function2()

    def function1():
        self.ui.text_label.setText("some text")
    function1()

app = QtGui.QApplication(sys.argv)
window = AppGui()
ui = Ui_Dialog()
window.show()
sys.exit(app.exec_())

簡単にするために、別のファイルに別の関数を作成しました。どのスクリプトからでもいつでもアクセスできるようにします。

another_file_function からの関数のサンプルを次に示します。

#!/usr/bin/env python

def function2():
  #code here
  self.ui.text_label.setText("some text")

main スクリプトの function1 と another_file_function の function2 は同じです。また、メイン クラスから function2 を呼び出しています。問題は、function1()メイン スクリプトから使用すると、問題なく GUI テキストが更新されることです。ただし、別のファイルで同じ関数を使用し、メイン スクリプトからその関数を呼び出すと、更新に失敗し、global name 'self' is not definedエラーが発生します。

どこが間違っていますか?どんな助けでも感謝します。

ありがとうございました。

4

1 に答える 1

0

なぜfunction1機能するのかはわかりselfませんが、あなたが落とした定義が含まれていると思います。

仕事function2に取り掛かるには、次のようなことをする必要があります。

他のファイル:

def function2(input):
    #code here
    input.ui.text_label.setText("some text")

メインファイル:

#!/usr/bin/env python

from PyQt4 import QtGui
from multibootusb_ui import Ui_Dialog
import sys
import os
import another_file_function
class AppGui(QtGui.QDialog,Ui_Dialog):

    def __init__(self):
        QtGui.QDialog.__init__(self)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.ui.close.clicked.connect(self.close)
        another_file_function.function2()

    def function1(self):
        self.ui.text_label.setText("some text")
    function1()

app = QtGui.QApplication(sys.argv)
window = AppGui()
another_file_function.function2(window)
window.function1()
window.show()
sys.exit(app.exec_())
于 2013-09-13T02:37:20.007 に答える