Python文件之间的数据传输

问题描述:

需要一些帮助,请解释为什么以下不起作用。 环境:Python 3.4,Gtk3.0,Python的有限体验 文件selectcontact.py包含代码,用于选择多个记录中的一个并将其密钥传递回其父进程以用于其他至少三个操作之一。从父类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: 高清初始化(个体经营,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不会被调用,直到控件传回给父级。 parent_class位可以工作,因为contact_store已正确填充。但是,回到父级的传输似乎不起作用,并且两个打印语句以错误的顺序发生: 自管理0 从选择2 评论感谢收到。 Graeme

“Modal”仅指窗口。也就是说,模态窗口阻止访问父窗口。

它与正在运行的代码无关。我对这个特定的窗口框架并不熟悉,但我曾经使用过的任何GUI都有一个单独的线程,并且至少有一个用于处理,以保持GUI响应,并且消息循环在所有活动窗口中运行,而不仅仅是当前的窗口与焦点。模态对话框无法控制何时执行其他线程中的代码。

你应该能够进入调试器,看看在任何给定的时间线程正在运行以及在每个线程中运行的是什么。