[Python] Glade3 e statusbar
Marcello
marcello a linuxvil.it
Dom 13 Ott 2013 17:53:23 CEST
> cmq i problemi rimarranno se blocchi il mainloop lanciando dei processi
esterni
> e questo mi fa pensare che ho ragione.
Si effettivamente il problema è proprio il blocco della mainloop.
Ho provato ad utilizzare Tread, ma ottengo lo stesso risultato
from threading import Thread
from gi.repository import Gtk
class Windows(object):
def __init__(self):
self.ApplicazioneGlade = Gtk.Builder()
self.ApplicazioneGlade.add_from_file(PercorsoGlade)
self.ApplicazioneGlade.connect_signals(self)
self.statusbar = self.ApplicazioneGlade.get_object('statusbar')
self.context_id = self.statusbar.get_context_id('statusbar')
self.statusbar.push(self.context_id, 'Status . . . . . . . ')
def run(self, *args):
self.ApplicazioneGlade.get_object("FinestraPrincipale").show()
self.model = Gtk.ListStore(str,str,str,str,str)
elencoimpianti = self.ApplicazioneGlade.get_object('ElencoImpianti')
elencoimpianti.get_selection().set_mode(Gtk.SelectionMode.SINGLE)
col1,col2,col3,col4,col5 = range(5)
elencoimpianti.set_model(self.model)
cell = Gtk.CellRendererText()
column2 = Gtk.TreeViewColumn("- Nome Impianto -", cell, text = col2)
column2.set_resizable (True)
column2.set_sort_column_id(col2)
elencoimpianti.append_column (column2)
column3 = Gtk.TreeViewColumn("- Codice Impianto -", cell, text =
col3)
column3.set_resizable (True)
column3.set_sort_column_id(col3)
elencoimpianti.append_column (column3)
column4 = Gtk.TreeViewColumn(" Pers ", cell, text = col4)
column4.set_resizable (True)
column4.set_sort_column_id(col4)
elencoimpianti.append_column (column4)
column5 = Gtk.TreeViewColumn(" -PBX- ", cell, text = col5)
column5.set_resizable (True)
column5.set_sort_column_id(col5)
elencoimpianti.append_column (column5)
datiDB =
pyodbc.connect('DRIVER={};DBQ={};PWD={}'.format(DriverMDB,PercorsoMDB,PwdMDB))
cur = datiDB.cursor()
cur.execute("select
CapoImpianto,NomeImpianto,CodiceImpianto,NomeSW,TipoCentrale from Impianti
where Gestione = '"+gestione+"'")
dati = cur.fetchall()
for dato in dati:
if str(dato[0]) == "None":
var1= ''
else:
var1=str(dato[0])
var2=str(dato[1])
var3=str(dato[2])
var4=str(dato[3])
if str(dato[4]) == "None":
var5= ''
else:
var5=str(dato[4])
record = self.model.append([var1,var2,var3,var4,var5])
cur.close()
datiDB.close()
Gtk.main()
def on_statusbar_show(self, button,obj,data=None):
self.statusbar = self.ApplicazioneGlade.get_object('statusbar')
self.context_id = self.statusbar.get_context_id('statusbar')
self.statusbar.push(self.context_id, self.MessaggioStatusbar)
def on_VerTab_clicked(self, button):
self.MessaggioStatusbar = 'Hai premuto Verifica Tabella'
thread1 = Thread(target=self.on_statusbar_show(self,
button,data=None),args=[])
thread1.start()
thread1.join()
thread2 = Thread(target=self.on_VerTab_clicked2(self),args=[])
thread2.start()
thread2.join()
def on_VerTab_clicked2(self, button):
... codice che controlla parecchi file di testo ......
... insert INTO DB .........
Windows().run()
Posso risolvere questo problema facilmente senza stravolgere il programma?
Ciao
Marcello
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20131013/6095051d/attachment.html>
Maggiori informazioni sulla lista
Python