Участник с: 08 апреля 2017
|
Пишу простой плеер для прослушивания музыки с youtube, столкнулся с проблемой в поиске, а точнее в построении списка треков в Gtk.Box()
def render_search_result(self, *data):
try:
raw_html = helpers.search.get_search_results_html(data[0])
vids = helpers.search.get_videos(raw_html)
# print(vids)
self.listhbox = Gtk.VBox()
self.vbox.pack_start(self.listhbox, False, True, 5)
for _ in vids:
attrs = helpers.search.get_video_attrs(_)
#NEED TO FIX EMPTY OUTPUT
if attrs == None:
continue
self.label_p = Gtk.Label(attrs['title'])
self.button_p = Gtk.Button()
self.play_image = Gtk.Image.new_from_icon_name(
"gtk-media-play",
Gtk.IconSize.MENU
)
self.button_p.set_image(self.play_image)
self.button_p.connect("clicked", self.init_player_thread, attrs['id'])
track_box = Gtk.VBox()
self.listhbox.pack_start(track_box, False, True, 2)
track_box.pack_start(self.button_p, False, True, 0)
track_box.pack_start(Gtk.HSeparator(), False, False, 0)
track_box.pack_start(self.label_p, False, True, 0)
# self.scrolled_window.add_with_viewport(self.vbox)
# self.add(self.scrolled_window)
self.search_button.set_sensitive(True)
self.show_all()
except Exception as e:
print(e)
def search_keyword(self, widget):
search = self.search_entry.get_text()
if len(search) < 1:
msg = 'Please, typing keyword for search'
dialog = Gtk.MessageDialog(window, 0,
Gtk.MessageType.INFO,
Gtk.ButtonsType.OK, msg)
dialog.run()
dialog.destroy()
return
self.search_button.set_sensitive(False)
threading.Thread(target=self.render_search_result, args=(search,)).start()
Правильно ли я в цикле строю виджеты? Потому что именно в этом моменте постоянно выходит, что приложение либо вообще фризит, либо выдает в вылете ошибки сегментаци и I/O, что чаще всего.
|