Pygtk: doubleclick على cellrenderer
-
26-09-2019 - |
سؤال
في تطبيق PYGTK الخاص بي ، أستخدم حاليًا "قابلة للتحرير" لجعل الخلايا قابلة للتحرير. ولكن نظرًا لأن محتويات الخلايا الخاصة بي في بعض الأحيان تكون كبيرة حقًا ، أريد أن أسأل المستخدم عن تغييرات في نافذة جديدة عندما يكون مضاعفًا على خلية. لكنني لم أتمكن من معرفة كيفية ربط النقرات المزدوجة على أجهزة نقل الخلايا المحددة - لا أريد تحرير الصف بأكمله ولا أريد أيضًا تعيين رد الاتصال هذا للصف بأكمله ، فقط للأعمدة التي يحتسي فيها محتوى طويل جدًا يمكن أن يحدث. كيف يمكنني القيام بذلك باستخدام cellRenderErtext () أو شيء مشابه.
رمز توليد الخلايا الخاص بي حاليًا هو:
cols[i] = gtk.TreeViewColumn(coltitle)
cells[i] = gtk.CellRendererText()
cols[i].pack_start(cells[i])
cols[i].add_attribute(cells[i], 'text', i)
cols[i].set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
cols[i].set_fixed_width(100)
cells[i].set_property('editable', True)
cells[i].connect('edited', self.edited, (i, ls))
cols[i].set_resizable(True)
mytreeview.append_column(cols[i])
شكرًا!
المحلول
أعتقد أن هذا غير ممكن مباشرة. ومع ذلك ، يمكنك الاتصال بـ button-press-event
على ال gtk.TreeView
. اذا متى event.type
يساوي gtk.gdk._2BUTTON_PRESS
, ، يتحول x
و y
إلى موقع الشجرة باستخدام gtk.TreeView.get_path_at_pos()
. سيؤدي هذا إلى إرجاع مسار الشجرة الذي يشير إلى الصف و gtk.TreeViewColumn
كائن الذي تم نقرته.