Δημοσιεύτηκε: 22 Οκτ 2011, 15:10
Phantomas έγραψε:Spoiler: show
Σαφώς και έτσι ξεκίνησα αρχικά να το κάνω, αφού ούτως ή άλλως δεν είχα ιδέα από multithreading και λοιπά, αλλά δεν πιάνει! Αν το κάνω έτσι όπως λες, αρχίζει να τρέχει η copying(), και το spinner εμφανίζεται αφού αυτή τελειώσει! Δεν ξέρω γιατί συμβαίνει αυτό, και μετά υπέθεσα ότι μάλλον πρέπει με κάποιο τρόπο να τα "εξαναγκάσω" να τρέξουν με τη σειρά που θέλω...
Εκτός κι αν πάλι κάνω καμιά πατάτα, εσύ το έτρεξες έτσι και δούλεψε;
btw, το πρόγραμμα αυτή τη στιγμή χωρίς spinner είναι κάπως έτσι (τώρα που ξαναβλέπω τι είχα γράψει, όντως, το παράκανα με τις συναρτήσεις!
- Κώδικας: Επιλογή όλων
#! /usr/bin/env python
import pygtk
pygtk.require('2.0')
import gtk
import threading
import thread
from multiprocessing import Process, Event
import time
import gobject
def copying () :
print("Copying...")
time.sleep(1)
print("Copying...")
time.sleep(1)
print("Copying...")
time.sleep(1)
print("Copying...")
time.sleep(1)
return True
class Synchronaiz() :
def __init__(self) :
builder = gtk.Builder()
builder.add_from_file("synchronaiz.glade")
self.mainwindow = builder.get_object("mainwindow")
self.donewindow = builder.get_object("donewindow")
self.statuslabel = builder.get_object("statuslabel")
self.spinner = builder.get_object("spinner")
builder.connect_signals(self)
def on_window_destroy(self, widget, data=None) :
gtk.main_quit()
def on_synchbutton_clicked(self, widget, data=None) :
def setLabel() :
self.statuslabel.set_text(u'Synching... It may take a few minutes.')
def start_copying() :
isdone = False
isdone = copying()
if (isdone == True) :
self.statuslabel.set_text(u'')
self.mainwindow.hide()
self.donewindow.show()
gobject.timeout_add(100, setLabel)
gobject.timeout_add(200, startCopying, sourcef, destf)
if __name__ == '__main__' :
synch = Synchronaiz()
synch.mainwindow.show()
gtk.main()