Besoin d'aide s'il vous plaît pour expliquer pourquoi ce qui suit ne fonctionne pas. Environnement: Python 3.4, Gtk3.0, expérience limitée de Python Le fichier selectcontact.py contient du code permettant de sélectionner l'un des nombreux enregistrements et de renvoyer sa clé à son processus parent pour l'utiliser dans au moins trois autres actions.Transfert de données entre les fichiers Python
extrait de code de la classe parente:
….
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)
....
extrait de code de selectcontact: classe SelectContactGUI: def initialisation (auto, 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 est déclaré comme "modal", donc je m'attendais à ce que l'appel à selectcontact agisse comme un sous-programme, de sorte que editcontact ne soit pas appelé tant que le contrôle n'a pas été transmis au parent. Le bit parent_class fonctionne parce que le contact_store est correctement renseigné. Toutefois, le transfert vers le parent semble ne pas fonctionner et les deux instructions d'impression apparaissent dans le mauvais ordre: De Manage 0 De select 2 Commentaires reçus avec reconnaissance. Graeme