Glade + python : εμφάνιση spinner

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: Glade + python : εμφάνιση spinner

Δημοσίευσηαπό clepto » 02 Ιούλ 2012, 17:44

από ότι φαίνεται ο μόνος τρόπος είναι με thread... http://www.reddit.com/r/ubuntuappshowdo ... h_spinner/

έφτιαξα ένα απλό παράδειγμα αλλά εκτελούνται τόσο γρήγορα οι εντολές που είναι σαν δουλεύει το spinner...
Κώδικας: Επιλογή όλων
#!/usr/bin/python
from gi.repository import Gtk

class MyWindow(Gtk.Window):

def __init__(self):
Gtk.Window.__init__(self, title="Hello World")

self.button = Gtk.Button(label="Click Here")
self.spinner = Gtk.Spinner()
self.layout = Gtk.Box( spacing=6 )
self.button.connect("clicked", self.on_button_clicked)
self.layout.pack_start(self.button, True, True, 0)
self.layout.pack_start(self.spinner, True, True, 0)

self.add(self.layout)

def on_button_clicked(self, widget):
self.spinner.start()
for i in range(0, 10000):
time.sleep(1)

self.spinner.stop()

win = MyWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()


έκανα εδιτ τον κώδικα και πρόσθεσα time.sleep(1)
δοκίμασε τώρα και θα δεις ότι ο spinner δεν κουνιέται...
το τρέχω με python3 γιατί αλλιώς έπαιρνα σφάλμα
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 13.04 raring 3.8.0-30-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic, Windows 7
3 Intel Core i7-3537U CPU @ 2.00GHz ‖ RAM 3840 MiB ‖ ASUS K56CB
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168 PCI Express Gigabit Ethernet controller [10ec:8168] (rev 0a)
clepto
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4102
Εγγραφή: 07 Ιαν 2010, 16:27
Τοποθεσία: Πάτρα
Launchpad: christriant
IRC: Clepto
Εκτύπωση

Re: Glade + python : εμφάνιση spinner

Δημοσίευσηαπό pmav99 » 02 Ιούλ 2012, 21:18

To παράδειγμα αυτό, αν διορθώσεις τα imports και το pack_start παίζει κανονικά.
http://learngtk.org/pygtk-tutorial/spinner.html

edit
επειδή είμαι καλό παιδί
Μορφοποιημένος Κώδικας: Επιλογή όλων
from gi.repository import Gtk

class MyWindow(Gtk.Window):
def __init__(self):
super(MyWindow, self).__init__(title="Hello Spinner!")
self.set_default_size(200, 200)
vbox = Gtk.VBox(False, 5)
hbox = Gtk.HBox(True, 5)

self.spinner = Gtk.Spinner()
self.start_button = Gtk.Button("Start")
self.stop_button = Gtk.Button("Stop")

self.connect("destroy", lambda w: Gtk.main_quit())
self.start_button.connect("clicked", self.start_animation)
self.stop_button.connect("clicked", self.stop_animation)

self.add(vbox)
vbox.pack_start(self.spinner, True, True, 0)
vbox.pack_end(hbox, False, False, 0)
hbox.pack_start(self.start_button, True, True, 0)
hbox.pack_start(self.stop_button, True, True, 0)

def start_animation(self, widget):
self.spinner.start()

def stop_animation(self, widget):
self.spinner.stop()

win = MyWindow()
win.show_all()
Gtk.main()
pmav99
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 574
Εγγραφή: 05 Ιούλ 2008, 14:29
Εκτύπωση

Re: Glade + python : εμφάνιση spinner

Δημοσίευσηαπό clepto » 02 Ιούλ 2012, 21:23

αυτό όμως δεν καλεί άλλες εντολές ανάμεσα στο spinner.start και stop γιατί εκεί είναι το πρόβλημα...όταν εκτελούνται άλλες εντολές..

δοκίμασες αυτό που έβαλα παραπάνω;
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 13.04 raring 3.8.0-30-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic, Windows 7
3 Intel Core i7-3537U CPU @ 2.00GHz ‖ RAM 3840 MiB ‖ ASUS K56CB
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168 PCI Express Gigabit Ethernet controller [10ec:8168] (rev 0a)
clepto
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4102
Εγγραφή: 07 Ιαν 2010, 16:27
Τοποθεσία: Πάτρα
Launchpad: christriant
IRC: Clepto
Εκτύπωση

Re: Glade + python : εμφάνιση spinner

Δημοσίευσηαπό pmav99 » 02 Ιούλ 2012, 21:53

Γιατί θες να καλεί άλλες εντολές το spinner? Δεν είναι πιο απλό η άλλη εντολή να καλεί το spinner?
pmav99
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 574
Εγγραφή: 05 Ιούλ 2008, 14:29
Εκτύπωση

Re: Glade + python : εμφάνιση spinner

Δημοσίευσηαπό clepto » 02 Ιούλ 2012, 21:56

το θέμα είναι ότι το spinner δεν μπορεί να κινείται αν τρέχουν άλλες εντολές...
αυτό που θέλω εγώ είναι να τρέχει το spinner ενώ τρέχουν και άλλες εντολές οπότε πρέπει να χρησιμοποιήσω threads...
αλλά δεν έχω ιδέα...και δεν πολυκαταλαβαίνω...
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 13.04 raring 3.8.0-30-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic, Windows 7
3 Intel Core i7-3537U CPU @ 2.00GHz ‖ RAM 3840 MiB ‖ ASUS K56CB
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168 PCI Express Gigabit Ethernet controller [10ec:8168] (rev 0a)
clepto
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4102
Εγγραφή: 07 Ιαν 2010, 16:27
Τοποθεσία: Πάτρα
Launchpad: christriant
IRC: Clepto
Εκτύπωση

Re: Glade + python : εμφάνιση spinner

Δημοσίευσηαπό pmav99 » 02 Ιούλ 2012, 22:34

Δεν ξέρω, γενικά λέει δεν προτείνεται pygtk και threads

http://stackoverflow.com/questions/4833 ... on-program
pmav99
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 574
Εγγραφή: 05 Ιούλ 2008, 14:29
Εκτύπωση

Προηγούμενη

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι