2017-08-07 19 views
0

以下の理由が機能しない理由を説明してください。 環境:Python 3.4、Gtk3.0、Pythonの限られた経験 ファイルselectcontact.pyには、いくつかのレコードの1つを選択し、そのキーを親プロセスに戻して少なくとも3つのアクションのうちの1つで使用するコードが含まれています。親クラスからPythonファイル間のデータ転送

コードスニペット:

…. 
     self.cindex = 0 
…. 
    def editcontact_clicked (self, menuitem): 
     import selectcontact 
     selectcontact.SelectContactGUI(self) 
     print ('From Manage ', self.cindex) 
     if self.cindex > 0: 
      import editcontact 
      editcontact.EditContactGUI(self.db, self.cindex) 

...。 selectcontactから

コードスニペット: クラスSelectContactGUI: DEF のinit(自己、parent_class):

self.builder = Gtk.Builder() 
    self.builder.add_from_file(UI_FILE) 
    self.builder.connect_signals(self) 

    self.parent_class = parent_class 
    self.db = parent_class.db 
    self.cursor = self.db.cursor(cursor_factory = psycopg2.extras.NamedTupleCursor) 

    self.contact_store = self.builder.get_object('contact_store') 

    self.window = self.builder.get_object('window1') 
    self.window.show_all() 

def select_contact_path(self, path): 
    self.builder.get_object('treeview_selection1').select_path(path) 

def contact_treerow_changed (self, treeview): 
    selection = self.builder.get_object('treeview_selection1') 
    model, path = selection.get_selected() 
    if path != None: 
     self.parent_class.cindex = model[path][0] 
     print ('From select ', self.parent_class.cindex) 
    self.window.destroy() 

...。

window1は "モーダル"と宣言されていますので、selectcontactの呼び出しがサブルーチンとして機能することを期待していたので、コントロールが親に返されるまでeditcontactは呼び出されませんでした。 contact_storeが正しく設定されているため、parent_classビットが機能します。しかし、親に戻っても正常に動作しないと思われ、2つの印刷文が間違った順序で発生します。 管理0から から選択2 感謝の意を表明します。 Graeme

答えて

0

「モーダル」はウィンドウのみを示します。つまり、モーダルウィンドウは親ウィンドウへのアクセスを防ぎます。

実行中のコードとはほとんど関係がありません。私はこの特定のウィンドウフレームワークに精通していませんが、私が作業しているのは、GUI用のスレッドと、処理用のスレッドとGUIの応答性を保つためのスレッドと、現在アクティブなウィンドウだけでなく、焦点を当ててモーダルダイアログでは、他のスレッドのコードが実行されるタイミングを制御することはできません。

デバッガに侵入して、実行中のスレッドと実行中のスレッドをいつでも確認することができます。

関連する問題