Δημοσιεύτηκε: 11 Φεβ 2012, 13:49
από medigeek
Gtk3 ubuntu-gr forum signature: https://github.com/medigeek/ubuntu-gr_forum_signature (φάκελος future)
Gtk2 to Gtk3 patch: http://pastebin.com/dmeR8RrD

Διαδικασία μετατροπής με τα σφάλματα που πήρα:
1.
Κώδικας: Επιλογή όλων
from gi.repository import Gtk as gtk

..και αργότερα αφαίρεσα το κομμάτι "as gtk". Replace all: "gtk." -> "Gtk."

Αργότερα χρειάστηκα και το Gdk:
Κώδικας: Επιλογή όλων
from gi.repository import Gtk,Gdk


2.
gi._glib.GError: Invalid object type `GtkComboBoxEntry'

Στο αρχείο .glade το "GtkComboBoxEntry" έπρεπε να γίνει "GtkComboBoxText"
Επίσης θέλει ένα xml property:
Κώδικας: Επιλογή όλων
<property name="has-entry">True</property>

(Μπορείτε να το θέσετε από το glade πρόγραμμα.)

3.
Ακολούθως το ανοίγετε με το πρόγραμμα glade. Τα περισσότερα τα αναλαμβάνει το glade.
* Στο File > Properties επιλέγετε "Gtk 3"
* Τα "GtkVBox" γίνονται "GtkBox". Χρειάζονται property για να γίνουν vertical. (Μπορείτε να το θέσετε από το glade πρόγραμμα.)
Κώδικας: Επιλογή όλων
<property name="orientation">vertical</property>


4.
AttributeError: 'gi.repository.Gtk' object has no attribute 'RESPONSE_CANCEL'
Fix: Το "gtk.RESPONSE_CANCEL" (gtk.RESPONSE_*) το αντικατέστησα με "gtk.ResponseType.CANCEL"
http://python-gtk-3-tutorial.readthedoc ... add_button

5.
AttributeError: 'ComboBoxText' object has no attribute 'set_text_column'
Fix: το αντικατέστησα με set_entry_text_column()

5.
To liststore δεν δουλεύει πλέον.
Πρόσθεσα μέσω του κώδικα το liststorecombo1 model:
Κώδικας: Επιλογή όλων
self.liststore = self.builder.get_object("liststorecombo1")
self.comboboxlinux = self.builder.get_object("comboboxtext1")
self.comboboxlinux.set_model(self.liststore)
self.comboboxprogramming = self.builder.get_object("comboboxtext2")
self.comboboxprogramming.set_model(self.liststore)
self.comboboxenglish = self.builder.get_object("comboboxtext3")
self.comboboxenglish.set_model(self.liststore)


6.
TypeError: get_text() takes exactly 4 arguments (3 given)
Fix: Το αντικατέστησα με
Κώδικας: Επιλογή όλων
(start, end) = self.textboxbuf.get_bounds()
self.textboxbuf.get_text(start, end, include_hidden_chars=False)


7.
AttributeError: 'gi.repository.Gtk' object has no attribute 'clipboard_get'
Fix:
Κώδικας: Επιλογή όλων
clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
clipboard.set_text(text, -1)
clipboard.store()


8.
AttributeError: 'Statusbar' object has no attribute 'remove_message'
Fix:
Κώδικας: Επιλογή όλων
self.statusbar.remove(self.statusbarcid, msgid)