Programmare in pygobject

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: Programmare in pygtk

Messaggio da ZeroUno »

print(button.__doc__)

Codice: Seleziona tutto

None
print(dir(button))

Codice: Seleziona tutto

['__bool__', '__class__', '__contains__', '__copy__', '__deepcopy__', '__delattr__', '__dict__', '__doc__', '__eq__', '__format__', '__gdoc__', '__ge__', '__getattribute__', '__gpointer__', '__grefcount__', '__gsignals__', '__gt__', '__gtype__', '__hash__', '__info__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__module__', '__ne__', '__new__', '__nonzero__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_force_floating', '_init', '_ref', '_ref_sink', '_unref', '_unsupported_data_method', '_unsupported_method', 'activate', 'add', 'add_accelerator', 'add_child', 'add_device_events', 'add_events', 'add_mnemonic_label', 'add_tick_callback', 'bin', 'bind_property', 'bind_property_full', 'bind_template_callback_full', 'bind_template_child_full', 'can_activate_accel', 'chain', 'check_resize', 'child_focus', 'child_get', 'child_get_property', 'child_notify', 'child_notify_by_pspec', 'child_set', 'child_set_property', 'child_type', 'class_path', 'clicked', 'compat_control', 'compute_expand', 'connect', 'connect_after', 'connect_data', 'connect_object', 'connect_object_after', 'construct_child', 'container', 'create_pango_context', 'create_pango_layout', 'custom_finished', 'custom_tag_end', 'custom_tag_start', 'destroy', 'destroyed', 'device_is_shadowed', 'disconnect', 'disconnect_by_func', 'do_activate', 'do_add', 'do_adjust_baseline_allocation', 'do_adjust_baseline_request', 'do_adjust_size_allocation', 'do_adjust_size_request', 'do_button_press_event', 'do_button_release_event', 'do_can_activate_accel', 'do_check_resize', 'do_child_notify', 'do_child_type', 'do_clicked', 'do_composite_name', 'do_composited_changed', 'do_compute_expand', 'do_configure_event', 'do_damage_event', 'do_delete_event', 'do_destroy', 'do_destroy_event', 'do_direction_changed', 'do_dispatch_child_properties_changed', 'do_drag_begin', 'do_drag_data_delete', 'do_drag_data_get', 'do_drag_data_received', 'do_drag_drop', 'do_drag_end', 'do_drag_failed', 'do_drag_leave', 'do_drag_motion', 'do_draw', 'do_enter', 'do_enter_notify_event', 'do_event', 'do_focus', 'do_focus_in_event', 'do_focus_out_event', 'do_forall', 'do_get_accessible', 'do_get_child_property', 'do_get_path_for_child', 'do_get_preferred_height', 'do_get_preferred_height_and_baseline_for_width', 'do_get_preferred_height_for_width', 'do_get_preferred_width', 'do_get_preferred_width_for_height', 'do_get_request_mode', 'do_grab_broken_event', 'do_grab_focus', 'do_grab_notify', 'do_hide', 'do_hierarchy_changed', 'do_key_press_event', 'do_key_release_event', 'do_keynav_failed', 'do_leave', 'do_leave_notify_event', 'do_map', 'do_map_event', 'do_mnemonic_activate', 'do_motion_notify_event', 'do_move_focus', 'do_parent_set', 'do_popup_menu', 'do_pressed', 'do_property_notify_event', 'do_proximity_in_event', 'do_proximity_out_event', 'do_query_tooltip', 'do_queue_draw_region', 'do_realize', 'do_released', 'do_remove', 'do_screen_changed', 'do_scroll_event', 'do_selection_clear_event', 'do_selection_get', 'do_selection_notify_event', 'do_selection_received', 'do_selection_request_event', 'do_set_child_property', 'do_set_focus_child', 'do_set_related_action', 'do_show', 'do_show_all', 'do_show_help', 'do_size_allocate', 'do_state_changed', 'do_state_flags_changed', 'do_style_set', 'do_style_updated', 'do_touch_event', 'do_unmap', 'do_unmap_event', 'do_unrealize', 'do_visibility_notify_event', 'do_window_state_event', 'drag_begin', 'drag_begin_with_coordinates', 'drag_check_threshold', 'drag_dest_add_image_targets', 'drag_dest_add_text_targets', 'drag_dest_add_uri_targets', 'drag_dest_find_target', 'drag_dest_get_target_list', 'drag_dest_get_track_motion', 'drag_dest_set', 'drag_dest_set_proxy', 'drag_dest_set_target_list', 'drag_dest_set_track_motion', 'drag_dest_unset', 'drag_get_data', 'drag_highlight', 'drag_source_add_image_targets', 'drag_source_add_text_targets', 'drag_source_add_uri_targets', 'drag_source_get_target_list', 'drag_source_set', 'drag_source_set_icon_gicon', 'drag_source_set_icon_name', 'drag_source_set_icon_pixbuf', 'drag_source_set_icon_stock', 'drag_source_set_target_list', 'drag_source_unset', 'drag_unhighlight', 'draw', 'emit', 'emit_stop_by_name', 'ensure_style', 'enter', 'error_bell', 'event', 'find_child_property', 'find_property', 'find_style_property', 'forall', 'force_floating', 'foreach', 'freeze_child_notify', 'freeze_notify', 'g_type_instance', 'get_accessible', 'get_action_group', 'get_action_name', 'get_action_target_value', 'get_alignment', 'get_allocated_baseline', 'get_allocated_height', 'get_allocated_size', 'get_allocated_width', 'get_allocation', 'get_always_show_image', 'get_ancestor', 'get_app_paintable', 'get_border_width', 'get_can_default', 'get_can_focus', 'get_child', 'get_child_requisition', 'get_child_visible', 'get_children', 'get_clip', 'get_clipboard', 'get_composite_name', 'get_css_name', 'get_data', 'get_default_direction', 'get_default_style', 'get_device_enabled', 'get_device_events', 'get_direction', 'get_display', 'get_double_buffered', 'get_event_window', 'get_events', 'get_focus_chain', 'get_focus_child', 'get_focus_hadjustment', 'get_focus_on_click', 'get_focus_vadjustment', 'get_font_map', 'get_font_options', 'get_frame_clock', 'get_halign', 'get_has_tooltip', 'get_has_window', 'get_hexpand', 'get_hexpand_set', 'get_image', 'get_image_position', 'get_internal_child', 'get_label', 'get_mapped', 'get_margin_bottom', 'get_margin_end', 'get_margin_left', 'get_margin_right', 'get_margin_start', 'get_margin_top', 'get_modifier_mask', 'get_modifier_style', 'get_name', 'get_no_show_all', 'get_opacity', 'get_pango_context', 'get_parent', 'get_parent_window', 'get_path', 'get_path_for_child', 'get_pointer', 'get_preferred_height', 'get_preferred_height_and_baseline_for_width', 'get_preferred_height_for_width', 'get_preferred_size', 'get_preferred_width', 'get_preferred_width_for_height', 'get_properties', 'get_property', 'get_qdata', 'get_realized', 'get_receives_default', 'get_related_action', 'get_relief', 'get_request_mode', 'get_requisition', 'get_resize_mode', 'get_root_window', 'get_scale_factor', 'get_screen', 'get_sensitive', 'get_settings', 'get_size_request', 'get_state', 'get_state_flags', 'get_style', 'get_style_context', 'get_support_multidevice', 'get_template_child', 'get_tooltip_markup', 'get_tooltip_text', 'get_tooltip_window', 'get_toplevel', 'get_use_action_appearance', 'get_use_stock', 'get_use_underline', 'get_valign', 'get_valign_with_baseline', 'get_vexpand', 'get_vexpand_set', 'get_visible', 'get_visual', 'get_window', 'grab_add', 'grab_default', 'grab_focus', 'grab_remove', 'handle_border_width', 'handler_block', 'handler_block_by_func', 'handler_disconnect', 'handler_is_connected', 'handler_unblock', 'handler_unblock_by_func', 'has_default', 'has_focus', 'has_grab', 'has_rc_style', 'has_screen', 'has_visible_focus', 'hide', 'hide_on_delete', 'in_destruction', 'init_template', 'input_shape_combine_region', 'insert_action_group', 'install_child_properties', 'install_child_property', 'install_properties', 'install_property', 'install_style_property', 'interface_find_property', 'interface_install_property', 'interface_list_properties', 'intersect', 'is_ancestor', 'is_composited', 'is_drawable', 'is_floating', 'is_focus', 'is_sensitive', 'is_toplevel', 'is_visible', 'keynav_failed', 'leave', 'list_accel_closures', 'list_action_prefixes', 'list_child_properties', 'list_mnemonic_labels', 'list_properties', 'list_style_properties', 'map', 'mnemonic_activate', 'modify_base', 'modify_bg', 'modify_cursor', 'modify_fg', 'modify_font', 'modify_style', 'modify_text', 'new', 'new_from_icon_name', 'new_from_stock', 'new_with_label', 'new_with_mnemonic', 'notify', 'notify_by_pspec', 'override_background_color', 'override_color', 'override_cursor', 'override_font', 'override_property', 'override_symbolic_color', 'parent_instance', 'parser_finished', 'path', 'pop_composite_child', 'pressed', 'priv', 'propagate_draw', 'props', 'push_composite_child', 'qdata', 'queue_allocate', 'queue_compute_expand', 'queue_draw', 'queue_draw_area', 'queue_draw_region', 'queue_resize', 'queue_resize_no_redraw', 'realize', 'ref', 'ref_count', 'ref_sink', 'region_intersect', 'register_window', 'released', 'remove', 'remove_accelerator', 'remove_mnemonic_label', 'remove_tick_callback', 'render_icon', 'render_icon_pixbuf', 'reparent', 'replace_data', 'replace_qdata', 'reset_rc_styles', 'reset_style', 'resize_children', 'run_dispose', 'send_expose', 'send_focus_change', 'set_accel_path', 'set_accessible_role', 'set_accessible_type', 'set_action_name', 'set_action_target_value', 'set_alignment', 'set_allocation', 'set_always_show_image', 'set_app_paintable', 'set_border_width', 'set_buildable_property', 'set_can_default', 'set_can_focus', 'set_child_visible', 'set_clip', 'set_composite_name', 'set_connect_func', 'set_css_name', 'set_data', 'set_default_direction', 'set_detailed_action_name', 'set_device_enabled', 'set_device_events', 'set_direction', 'set_double_buffered', 'set_events', 'set_focus_chain', 'set_focus_child', 'set_focus_hadjustment', 'set_focus_on_click', 'set_focus_vadjustment', 'set_font_map', 'set_font_options', 'set_halign', 'set_has_tooltip', 'set_has_window', 'set_hexpand', 'set_hexpand_set', 'set_image', 'set_image_position', 'set_label', 'set_mapped', 'set_margin_bottom', 'set_margin_end', 'set_margin_left', 'set_margin_right', 'set_margin_start', 'set_margin_top', 'set_name', 'set_no_show_all', 'set_opacity', 'set_parent', 'set_parent_window', 'set_properties', 'set_property', 'set_realized', 'set_reallocate_redraws', 'set_receives_default', 'set_redraw_on_allocate', 'set_related_action', 'set_relief', 'set_resize_mode', 'set_sensitive', 'set_size_request', 'set_state', 'set_state_flags', 'set_style', 'set_support_multidevice', 'set_template', 'set_template_from_resource', 'set_tooltip_markup', 'set_tooltip_text', 'set_tooltip_window', 'set_use_action_appearance', 'set_use_stock', 'set_use_underline', 'set_valign', 'set_vexpand', 'set_vexpand_set', 'set_visible', 'set_visual', 'set_window', 'shape_combine_region', 'show', 'show_all', 'show_now', 'size_allocate', 'size_allocate_with_baseline', 'size_request', 'steal_data', 'steal_qdata', 'stop_emission', 'stop_emission_by_name', 'style_attach', 'style_get_property', 'sync_action_properties', 'thaw_child_notify', 'thaw_notify', 'translate_coordinates', 'trigger_tooltip_query', 'unmap', 'unparent', 'unrealize', 'unref', 'unregister_window', 'unset_focus_chain', 'unset_state_flags', 'watch_closure', 'weak_ref', 'widget']
queste le avevo viste anche con il debugger di visualstudio, ma è solo un elenco di proprietà ma non riesco a capire dove sarebbe memorizzato il colore

print(button.override_background_color)

Codice: Seleziona tutto

gi.FunctionInfo(override_background_color)
più interessanti - ma anche quì non ho trovato quello che mi serve -
print (dir(button.props))

Codice: Seleziona tutto

['action_name', 'action_target', 'always_show_image', 'app_paintable', 'border_width', 'can_default', 'can_focus', 'child', 'composite_child', 'double_buffered', 'events', 'expand', 'focus_on_click', 'halign', 'has_default', 'has_focus', 'has_tooltip', 'height_request', 'hexpand', 'hexpand_set', 'image', 'image_position', 'is_focus', 'label', 'margin', 'margin_bottom', 'margin_end', 'margin_left', 'margin_right', 'margin_start', 'margin_top', 'name', 'no_show_all', 'opacity', 'parent', 'receives_default', 'related_action', 'relief', 'resize_mode', 'scale_factor', 'sensitive', 'style', 'tooltip_markup', 'tooltip_text', 'use_action_appearance', 'use_stock', 'use_underline', 'valign', 'vexpand', 'vexpand_set', 'visible', 'width_request', 'window', 'xalign', 'yalign']

in verità credo che devo cercare nelle properties di 'area' e non di button, ma non ho trovato niente neanche lì, mentre in 'button' dovrei vedere se ha aggiunto l'area.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: Programmare in pygtk

Messaggio da ZeroUno »

Una preview. Fa abbastanza schifetto ma è un inizio.
Ho usato GtkGrid per posizionare gli oggetti.
slackpkg+gtk.png
slackpkg+gtk.png (17.35 KiB) Visto 10892 volte
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
lablinux
Linux 4.x
Linux 4.x
Messaggi: 1212
Iscritto il: gio 27 nov 2008, 12:23
Desktop: Gnome
Distribuzione: Debian testing
Località: Rho

Re: Programmare in pygtk

Messaggio da lablinux »

beh non è male. Non credo si possa fare molto meglio con pygtk.
Dai un'occhiata a kyvi, si installa in python con pip.

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: Programmare in pygtk

Messaggio da ZeroUno »

Solo non mi piacciono quei pulsanti on/off così grandi.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
brg
Linux 3.x
Linux 3.x
Messaggi: 580
Iscritto il: sab 12 mar 2011, 14:20
Slackware: 15.0
Kernel: 5.15.117
Desktop: KDE5
Località: Montecatini
Contatta:

Re: Programmare in pygtk

Messaggio da brg »

Ti consiglio di leggerti le linee guida di gnome per la progettazione di interfacce:
https://developer.gnome.org/hig/stable/ ... ut.html.en .

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: Programmare in pygobject

Messaggio da ZeroUno »

Grazie.

Così dovrebbe andare un po' meglio.
Non vi faccio vedere il codice per pietà :D
slackpkg+gtk1.png
slackpkg+gtk1.png (19.82 KiB) Visto 10820 volte
lasciate stare i bordi e la scritta al centro... è un bug di ksnapshot :)
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: Programmare in pygobject

Messaggio da ZeroUno »

in una gui in gtk ho messo un pulsante e qualche altro oggetto.
al pulsante ho associato un evento che impiega un po' di tempo ad essere eseguito; durante l'esecuzione fa un po' di aggiornamenti alla gui, tra cui spostare oggetti, ma gli spostamenti vengono applicati solo ad esecuzione terminata.
C'è modo di fargli aggiornare la gui durante l'esecuzione di un evento?
Mi viene in mente per esempio una progressbar che ti mostra lo stato di avanzamento, ma se la gui si aggiorna solo a fine attività allora la progressbar è poco utile.
Non è previsto che l'utente prema altri pulsanti durante l'esecuzione.
Ho provato con Gtk.Widget.queue_draw(self) ma non sortisce alcun effetto.
Ho visto in giro che il problema è abbastanza comune (almeno ai neofiti come me) ma non sono riuscito a trovare la soluzione.
C'è una soluzione?
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
brg
Linux 3.x
Linux 3.x
Messaggi: 580
Iscritto il: sab 12 mar 2011, 14:20
Slackware: 15.0
Kernel: 5.15.117
Desktop: KDE5
Località: Montecatini
Contatta:

Re: Programmare in pygobject

Messaggio da brg »

Una bella applicazione multithread.

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: Programmare in pygobject

Messaggio da ZeroUno »

nel caso specifico mi sono potuto permettere un sistema alternativo, che non mi piace, ma non era il caso (ora) di fare un multithread.
Il tipo di elaborazione in se è veloce; lenta è la presentazione dei risultati. Quindi ho fatto fare tutto il calcolo e messo in un array la roba da presentare, poi con GObject.timeout_add presento i risultati in modalità batch.

quello che dovrò fare più avanti invece è diverso.
Ma io posso lanciare un comando shell e vedere l'output su un textbox come fosse un tail -f ?
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: Programmare in pygobject

Messaggio da ZeroUno »

Ho un Gtk.Stack / Gtk.StackSwitcher

Popolo all'avvio tutti i tab dello stack, ma poi mi sarebbe utile che quando clicco sullo switcher mi facesse opportune modifiche al tab che sta per venire (ed anche agli altri) prima che questo venga presentato, oppure che mi validi il contenuto del tab attuale prima di passare ad un altro ed eventualmente negare il passaggio e forzare a rimanere sullo stesso per fare opportune modifiche (per esempio se metto settaggi incompatibili).
Ma non sono riuscito a trovare un evento dello switcher con cui fare questo.

Come si fa?


edit: Trovato evento notify::visible-child-name
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: Programmare in pygobject

Messaggio da ZeroUno »

Altro passo..
Ho una tabella fatta con Gtk.TreeView di cui una delle colonne è popolata con Gtk.CellRendererPixbuf. Nelle caselle ci sono quindi immagini. Io voglio assegnare un evento di click a queste immagini.

si può?
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
brg
Linux 3.x
Linux 3.x
Messaggi: 580
Iscritto il: sab 12 mar 2011, 14:20
Slackware: 15.0
Kernel: 5.15.117
Desktop: KDE5
Località: Montecatini
Contatta:

Re: Programmare in pygobject

Messaggio da brg »

Nelle caselle ci sono quindi immagini. Io voglio assegnare un evento di click a queste immagini.
Gtk lo permette, però non mi ricordo se hai bisogno di crearti dei pulsanti o se puoi usare direttamente le immagini.

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: Programmare in pygobject

Messaggio da ZeroUno »

Sembra che treeview non lo consente, quindi li ho messi fuori della treeview.

questi sono gli sviluppi attuali, ma mi sono momentaneamente fermato per cominciare a fare il motore del progetto (che ovviamente non è la gui).
edit: nota, in questa versione i pulsanti sono ancora nella treeview; nella nuova versione ho messo due pulsanti laterali; si seleziona la riga e poi si preme up o down.

Tra le altre cose questo programma dovrà scaricare file con wget e mettere una barra di avanzamento.

Pensavo di mettere la wget lanciata in background con & redirezionando l'output su un file e monitorare il file con GObject.timeout_add, ma viene una cosa brutta, cioè la wget ha parentpid=1, cioè lo sgancia da python.
In caso di kill della gui non si ripercuoterà anche sulla wget e comunque è brutto non sapere chi ha lanciato quella wget.
E' brutto anche dover creare un file.

C'è un modo migliore e qualche esempio già fatto?
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
ponce
Iper Master
Iper Master
Messaggi: 3022
Iscritto il: mer 5 mar 2008, 16:45
Nome Cognome: Matteo Bernardini
Slackware: slackware64-current
Kernel: 6.6.16
Desktop: lxde
Località: Pisa
Contatta:

Re: Programmare in pygobject

Messaggio da ponce »

non uso python (quindi scusami se dico castronerie), ma guardando in giro vedo che molti usano urllib

https://stackoverflow.com/questions/246 ... via-python

senno' ci sarebbe anche pycurl (gia' incluso in Slackware) ma non so se sia il piu' adatto per il tuo uso

http://pycurl.io/docs/latest/quickstart ... -to-a-file
https://github.com/pycurl/pycurl/blob/m ... est_gtk.py

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: Programmare in pygobject

Messaggio da ZeroUno »

purtroppo è mandatorio l'uso del wget di sistema (almeno per ora; sviluppi futuri si vedrà).
E a prescindere dal download mi piacerebbe poter monitorare l'output di programmi esterni (bash o meno) e riportare azioni sulla gui quali soprattutto una barra di scorrimento ma non solo.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Rispondi