0

私はグレードファイルを処理して初期化するクラスを持っています。他のメソッドはユーザーと対話します。

私が望むのは、すでに初期化されている空き地ファイルの表示オプション(テーマの検索、アイコンの検索など)を制御する別のクラスを作成することです。

私が知っているすべての種類の構築 (継承を含む) を使用していますが、複数のエラーが発生しました (変数 x が定義されていないなど)。最高の状態で、このエラーが発生しました。グレード ファイルを最初から初期化して別のウィンドウを表示させ、2 番目のウィンドウのオプションを設定し、元のウィンドウを変更しません。

これは、このエラーを引き起こすコードの一部です:

ファーストクラス:

def __init__(self):
    self.builder = gtk.Builder()

    self.glade_file = os.path.dirname(os.getcwd()) + '/glade_files/mainwin.glade'
    self.builder.add_from_file(self.glade_file)

    self.win=self.builder.get_object('window1')
    options()
    self.win.show()
    ................ and so on .

二等:

class options():
    .... some methods then 
    def icon_options():
        builder=gtk.Builder()
        a=os.path.dirname(os.getcwd()) + '/glade_files/mainwin.glade'
        builder.add_from_file(a)
        image=builder.get_object('image5')
        print image
        image.set_from_file('apple.png')

2番目のクラスが最初のクラスによって初期化されたウィンドウを制御できるようにする方法はありますか??

4

1 に答える 1

0

可能な解決策は、最初のクラスで作成されたウィンドウへの参照である 'options' を 2 番目のクラスに追加することです。したがって、ウィンドウのメンバーにアクセスできます。次のように、このオブジェクトを 2 番目のクラスのコンストラクターに渡すことができます。

最初のクラスでは:

def __init__(self):
    self.builder = gtk.Builder()

    # some code here ...

    self.win = self.builder.get_object('window1')
    options(self.win)
    self.win.show()

セカンドクラス:

class options():
    def __init__(self, window):
        self._window = window

    # do whatever you want with the window ...
于 2013-08-30T05:25:45.507 に答える