Torsten của câu trả lời là đúng, nhưng một chút không đầy đủ, vì vậy theo tinh thần http://xkcd.com/979/ đây là thủ tục Gần đây tôi đã giải quyết trên sau nhiều thử nghiệm và lỗi:
mở yada.glade trong thiết kế giao diện Glade. Vào edit-> project và thay đổi kiểu dự án thành GtkBuilder và chắc chắn rằng nó nhắm vào phiên bản mới nhất (2.24 như bài viết này). Lưu tập tin, là chắc chắn rằng nó tiết kiệm ở định dạng GtkBuilder, và thay đổi tên từ yada.glade để yada.ui
mở yada.py và thay đổi đoạn mã sau:
gladefile = relativize_filename(os.path.join("glade", "yada.glade"))
self.wTree = gtk.glade.XML(gladefile, self.windowname)
tới:
uifile = relativize_filename(os.path.join("glade", "yada.ui"))
self.wTree = gtk.Builder()
self.wTree.add_from_file(uifile)
Tương tự thay đổi tất cả các trường hợp của self.wTree.get_widget(...)
để self.wTree.get_object(...)
thay đổi self.wTree.signal_autoconnect(dic)
-self.wTree.connect_signals(dic)
Nếu mã của bạn tùy thuộc vào tên được gán tiện ích trong trình thiết kế giao diện, hãy thay đổi widget.get_name()
thành gtk.Buildable.get_name(widget)
. widget.get_name()
hiện chỉ trả về loại tiện ích. CHỈNH SỬA: Bạn cũng cần thay đổi widget.set_name('my_widget')
thành gtk.Buildable.set_name(widget, 'my_widget')
.
Xóa import gtk.glade
tôi thấy nhiều tín hiệu không sử dụng được định nghĩa trong file xml yada.ui, tôi đã phải mở file xml và tự xóa chúng để loại bỏ các cảnh báo họ gây ra.