What is your problem? How does it manifest itself?

hi i want to creat activity by Pygtk for OLPC-xo. so how i work pygtk in eclipse? sorry for my english skill. e.x import pygtk. it's not import

hi i want to creat activity by Pygtk for OLPC-xo. so how i work pygtk in eclipse? sorry for my english skill. e.x import pygtk. it's not import

re-read my above post ;)

What happens if you run this test code:

#!/usr/bin/env python

# example frame.py
# http://www.pygtk.org/pygtk2tutorial/sec-Frames.html

import pygtk
pygtk.require('2.0')
import gtk

class FrameExample:
    def __init__(self):
        # create new window
        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        window.set_title("Frame Example")

        # connect "destroy" event to signal handler
        window.connect("destroy", lambda w: gtk.main_quit())
        window.set_size_request(300, 300)

        # set border width of window
        window.set_border_width(10)

        # create the Frame
        frame = gtk.Frame()
        window.add(frame)

        # set the frame's label
        frame.set_label("GTK Frame Widget")

        # align the label at the right of the frame
        frame.set_label_align(1.0, 0.0)

        # set the style of the frame
        frame.set_shadow_type(gtk.SHADOW_ETCHED_OUT)
        frame.show()
  
        # display the window
        window.show()

def main():
    # enter the event loop
    gtk.main()
    return 0

if __name__ == "__main__":
    FrameExample()
    main()

Do you get error message?

What is your Operating System?
Which version of Python?
Which version of PyGTK?
On Windows PyGTK is almost impossible to install!

Hi, i'm trying to compile a .py file on eclipse using Pydev. I import in my code and pygtk. WHen i run it as 'Python Run' it terminates it.

I think it raise SystemExit when it imports 'gtk' and gobject'.....

Here is the code:

try :
import gtk
import gobject
except:
raise SystemExit
import pygtk
if gtk.pygtk_version<(2.0):
print "pygtk 2.0 or later require for this widget"
raise SystemExit
import pango
import random
import time
from os import open
from datetime import date
from sugar.activity import activity

class KremalaActivity(activity.Activity):

def __init__(self, handle):
activity.Activity.__init__(self, handle)

self.set_title("Kremala Activity")

# Show the toolbox elements
toolbox = activity.ActivityToolbox(self)
self.set_toolbox(toolbox)
toolbox.show()

table=gtk.Table()
table.set_homogeneous(False)
table.set_row_spacings(4)
table.set_col_spacings(4)

#listes me tis lekseis kai tis erotiseis
self.list_geo=["constantinople", "vatican","taygetus","norway","olympus","himalaya", "caspian"]

self.list_hist=["galille","mavrogenous","yalta","justinian","aristotle","helots","leonidas"]

self.list_nat=["oxygen","chlorophyll","sarcophagus","herb","plankton","petroleum","deciduous"]

self.list_question_geo=["einai h monadiki poli pou vrisketai anamesa se 2 xores",
"europaiko kratos pou exei ektash molis miso tetragoniko xlm.",
"se auto to bouno vriskotan o Kaiadas", "xora opou einai oi psiloteroi kataraktes tis Europis",
"einai to psilotero vouno tis Elladas", "h upsiloterh korufh tou kosmou",
"einai h megaluterh limnh ths ghs kai exei almuro nero"]

self.list_question_hist=["eipe ti frash 'ki omos kineitai'.",
"iroida ths ellinikis epanastashs pou ediokse o Kolleths apo to Nauplio",
"diaskepsi stin opoia suzhththike i idrish tou OHE","vizantinos autokratoras",
"daskalos tou M.Aleksandrou", "legontan oi douloi sthn arxaia Sparth",
"vasilias ths Sparths pou eipe to gnosto <molon lave> "]

self.list_question_nat=["xoris auto den uparxei zoi","aparaititi gia to xroma ton futon",
"einai to zoo pou trafetai mono me kreas","futo pou mporei na einai therapeutiko",
"trefontai ta psaria me auto", "paxureusto, mauro orukto pou apokaleitai kai <mauros xrusos> ",
"etsi legetai to dentro pou rixnei ta fulla tou to fthinoporo"]

#plaisio gia eisagogi onomatos
entryname=gtk.Entry()
entryname.modify_font(pango.FontDescription(str='sans bold 10'))
entryname.set_max_length(100)
self.entname=entryname.get_text()

button_save=gtk.Button("save")
button_save.connect("clicked",self.buttonsave)
tooltips = gtk.Tooltips()
tooltips.set_tip(button_save, "save the name")

#plaisio opou emfanizetai o kremasmenos an8ropos
self.m=6
vbox=gtk.VBox()
event_box = gtk.EventBox()
event_box.modify_bg(gtk.STATE_NORMAL, event_box.get_colormap().alloc_color("#75B844"))
image = gtk.Image()
image.set_from_file(self.make_image_name(self.m))
self.image=image
event_box.add(self.image)
vbox.add(event_box)

#plaisio opou emfanizontai oi eikones me to prosopo analoga me to minima pou emfanizetai
vbox1=gtk.VBox()
event_box1= gtk.EventBox()
event_box1.modify_bg(gtk.STATE_NORMAL, event_box1.get_colormap().alloc_color("#FFF333"))
image1 = gtk.Image()
image1.set_from_file('imgg/skepsi.jpg')
self.image1=image1
event_box1.add(self.image1)
vbox1.add(event_box1)

#kathgories
table_category=gtk.Table()
table_category.set_homogeneous(False)
table_category.set_row_spacings(2)
table_category.set_col_spacings(2)

buttongeo=gtk.Button("GEOGRAFIA")
buttongeo.connect("clicked", self.random_word, self.list_geo)
tooltips = gtk.Tooltips()
tooltips.set_tip(buttongeo, "BUTTON GEOGRAFIA")
buttonhist=gtk.Button("ISTORIA")
buttonhist.connect("clicked", self.random_word, self.list_hist)
tooltips = gtk.Tooltips()
tooltips.set_tip(buttonhist, "BUTTON ISTORIA")
buttonnat=gtk.Button("PERIVALLON")
buttonnat.connect("clicked", self.random_word, self.list_nat)
tooltips = gtk.Tooltips()
tooltips.set_tip(buttonnat, "BUTTON PERIVALLON")

self.buttongeo=buttongeo
self.buttonhist=buttonhist
self.buttonnat=buttonnat

table_category.attach(buttongeo,0,1,0,1)
table_category.attach(buttonhist,0,1,1,2)
table_category.attach(buttonnat,0,1,2,3)

#plaisio opou emfanizetai h eikona dipla stis kathgories
vbox2=gtk.VBox()
event_box2= gtk.EventBox()
event_box2.modify_bg(gtk.STATE_NORMAL, event_box2.get_colormap().alloc_color("#75B844"))
image2 = gtk.Image()
image2.set_from_file('imgg/img_kategory.jpg')
self.image2=image2
event_box2.add(self.image2)
vbox2.add(event_box2)

#plaisio opou emfanizetai h leksi
textview2=gtk.TextView()
textview2.set_editable(False)
textview2.set_cursor_visible(False)
textview2.set_justification(gtk.JUSTIFY_CENTER)
textview2.modify_font(pango.FontDescription(str='sans bold 18'))
self.textbuffer2=textview2.get_buffer()

##plaisio opou emfanizontai ta la8os grammata
entrygr=gtk.Entry()
entrygr.modify_font(pango.FontDescription(str='sans bold 16'))
entrygr.set_max_length(13)
self.entgr=entrygr.get_text()
tooltips = gtk.Tooltips()
tooltips.set_tip(entrygr, "edo emfanizontai ta lathos gramata")

#plaisio opou emfanizetai h erotisi
textview1=gtk.TextView()
textview1.set_editable(False)
textview1.set_cursor_visible(False)
textview1.set_justification(gtk.JUSTIFY_LEFT)
textview1.modify_font(pango.FontDescription(str='sans bold 8'))
self.textbuffer1=textview1.get_buffer()

labelname=gtk.Label(" onoma paikth:")
labelname.modify_font(pango.FontDescription(str='sans bold 10'))
labelname.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse('red'))

#plaisio opou emfanizontai ta analoga minimata
entrymin=gtk.Entry()
entrymin.modify_font(pango.FontDescription(str='sans bold 10'))
entrymin.set_max_length(100)
self.entmin=entrymin.get_text()

#plaisio opou emfanizontai oi prospa8eies
entryprot=gtk.Entry()
entryprot.modify_font(pango.FontDescription(str='sans bold 12'))
entryprot.set_max_length(70)
self.entprot=entryprot.get_text()

#dhmiourgei to plhktrologio me ta gramata
pad=gtk.Table()
table.set_homogeneous(False)
pad.set_row_spacings(2)
pad.set_col_spacings(1)
but_a=gtk.Button('A')
but_a.connect("clicked", self.add_letter, 'a')
self.but_a=but_a
but_b=gtk.Button('B')
but_b.connect("clicked", self.add_letter, 'b')
self.but_b=but_b
but_c=gtk.Button('C')
but_c.connect("clicked", self.add_letter, 'c')
self.but_c=but_c
but_d=gtk.Button('D')
but_d.connect("clicked", self.add_letter, 'd')
self.but_d=but_d
but_e=gtk.Button('E')
but_e.connect("clicked", self.add_letter, 'e')
self.but_e=but_e
but_f=gtk.Button('F')
but_f.connect("clicked", self.add_letter, 'f')
self.but_f=but_f
but_g=gtk.Button('G')
but_g.connect("clicked", self.add_letter, 'g')
self.but_g=but_g
but_h=gtk.Button('H')
but_h.connect("clicked", self.add_letter, 'h')
self.but_h=but_h
but_i=gtk.Button('I')
but_i.connect("clicked", self.add_letter, 'i')
self.but_i=but_i
but_j=gtk.Button('J')
but_j.connect("clicked", self.add_letter, 'j')
self.but_j=but_j
but_k=gtk.Button('K')
but_k.connect("clicked", self.add_letter, 'k')
self.but_k=but_k
but_l=gtk.Button('L')
but_l.connect("clicked", self.add_letter, 'l')
self.but_l=but_l
but_m=gtk.Button('M')
but_m.connect("clicked", self.add_letter, 'm')
self.but_m=but_m
but_n=gtk.Button('N')
but_n.connect("clicked", self.add_letter, 'n')
self.but_n=but_n
but_o=gtk.Button('O')
but_o.connect("clicked", self.add_letter, 'o')
self.but_o=but_o
but_p=gtk.Button('P')
but_p.connect("clicked", self.add_letter, 'p')
self.but_p=but_p
but_q=gtk.Button('Q')
but_q.connect("clicked", self.add_letter, 'q')
self.but_q=but_q
but_r=gtk.Button('R')
but_r.connect("clicked", self.add_letter, 'r')
self.but_r=but_r
but_s=gtk.Button('S')
but_s.connect("clicked", self.add_letter, 's')
self.but_s=but_s
but_t=gtk.Button('T')
but_t.connect("clicked", self.add_letter, 't')
self.but_t=but_t
but_u=gtk.Button('U')
but_u.connect("clicked", self.add_letter, 'u')
self.but_u=but_u
but_v=gtk.Button('V')
but_v.connect("clicked", self.add_letter, 'v')
self.but_v=but_v
but_w=gtk.Button('W')
but_w.connect("clicked", self.add_letter, 'w')
self.but_w=but_w
but_x=gtk.Button('X')
but_x.connect("clicked", self.add_letter, 'x')
self.but_x=but_x
but_y=gtk.Button('Y')
but_y.connect("clicked", self.add_letter, 'y')
self.but_y=but_y
but_z=gtk.Button('Z')
but_z.connect("clicked", self.add_letter, 'z')
self.but_z=but_z
pad.attach(but_a,0,1,0,1)
pad.attach(but_b,1,2,0,1)
pad.attach(but_c,2,3,0,1)
pad.attach(but_d,3,4,0,1)
pad.attach(but_e,4,5,0,1)
pad.attach(but_f,5,6,0,1)
pad.attach(but_g,6,7,0,1)
pad.attach(but_h,7,8,0,1)
pad.attach(but_i,8,9,0,1)
pad.attach(but_j,9,10,0,1)
pad.attach(but_k,10,11,0,1)
pad.attach(but_l,11,12,0,1)
pad.attach(but_m,12,13,0,1)
pad.attach(but_n,0,1,1,2)
pad.attach(but_o,1,2,1,2)
pad.attach(but_p,2,3,1,2)
pad.attach(but_q,3,4,1,2)
pad.attach(but_r,4,5,1,2)
pad.attach(but_s,5,6,1,2)
pad.attach(but_t,6,7,1,2)
pad.attach(but_u,7,8,1,2)
pad.attach(but_v,8,9,1,2)
pad.attach(but_w,9,10,1,2)
pad.attach(but_x,10,11,1,2)
pad.attach(but_y,11,12,1,2)
pad.attach(but_z,12,13,1,2)

#vazei ola ta widgets sto table
table.attach(labelname,1,4,0,1)
table.attach(entryname,4,5,0,1)
table.attach(button_save,5,7,0,1)
table.attach(vbox,0,2,0,4)
table.attach(table_category,2,4,1,2)
table.attach(vbox2,4,10,1,2)
table.attach(textview2,2,10,2,3)
table.attach(entrygr, 2,10,3,4)
table.attach(textview1,0,10,4,5)
table.attach(vbox1,0,1,5,6)
table.attach(entrymin, 1,10,5,6)
table.attach(entryprot, 0,10,6,7)
table.attach(pad, 0,10,7,8)
##
## window.add(table)
## window.show_all()
# vazei to table ston kamva tou sugar kai to emfanizei
self.set_canvas(table)
self.show_all()

self.view2=textview2
self.entrygr=entrygr
self.entrymin=entrymin
self.entryprot=entryprot
self.entryname=entryname
self.button_save=button_save

self.image.set_from_file(self.make_image_name(6))
self.list_button=[self.but_a, self.but_b,self.but_c,self.but_d,self.but_e,self.but_f,
self.but_g,self.but_h,self.but_i,self.but_j,self.but_k,self.but_l,
self.but_m,self.but_n,self.but_o,self.but_p,self.but_q,self.but_r,
self.but_s,self.but_t,self.but_u,self.but_v,self.but_w,self.but_x,
self.but_y,self.but_z]

self.buttongeo.set_sensitive(False)
self.buttonhist.set_sensitive(False)
self.buttonnat.set_sensitive(False)
self.disable_keyboard(False)
self.entryprot.set_text("Exeis 6 prospatheies gia na breis th leksi")


#metavlites
self.w=" " #apithikeuetai h epilegmenh leksi
self.p=" " #apothikeuontai oi paules
self.list_again=[] #lista me ta gramata pou dinontai
self.gr=' ' #to grama pou epilegei o xrhsths
self.categ=" "

#epistrefei thn eikona
def make_image_name(self, image_number):
return "imgg/image" + str(image_number) + ".jpg"

#synarthsh poy allazei tis eikones analoga me thn timh tou metrhth m
def change_image(self):
for i in range(6):
if self.m==i:
self.image.set_from_file(self.make_image_name(i))
return True

#vriskei ta gramata ths leksis
def show_gr(self):
new="" #apothikeuetai h nea leksi
for i in range(len(self.w)): #to i pairnei times apo 0 mexri to mikos tis leksis
if self.gr==self.w: #an to grama uparxei sth leksi
new=new+self.gr #to vazei sto new
else:
new=new+self.p #allios vazei paula, to p[] periexei paules
self.p=new
self.textbuffer2.set_text(new) #emfanizei sto textview2 th nea leksi

#eisagei stoixeia sto arxeio elements_file.txt, to opoio periexei statistika stoixeia ton paikton
def insert_text_file(self, strng):
file_obj=' '
file_obj=open("elements_file.txt", "a") #anoigei to arxeio gia eisagogh stoixeion
file_obj.write(strng) #grafei ta stoixeia
file_obj.close() #kleinei to arxeio

#otan path8ei to save, apo8ikeuontai kapoia stoixeia sto elements_file.txt
def buttonsave(self,widget):
self.disable_buttCateg(True)
self.disable_keyboard(True)
self.button_save.set_sensitive(False) #apenergopoihsh tou button save, etsi oste ka8e neos paikths
#na apo8hkeuei mia fora to onoma tou oso exei anoixto to paixnidi
ss=" "
ss="\nonoma: "+self.entryname.get_text()+"\n" #onoma paikth
xronos=date.today() #hmerominia
y=xronos.strftime("%m-%d-%y") #y=periexei thn hmerominis p.x. 03-05-09
u=time.localtime() #ora
w=time.strftime("%H:%M:%S", u) #w=periexei thn ora p.x. 12:25:13
## rr=str(y)
## uu=str(w)
## self.insert_text_file(ss+"hmerominia - ora: "+rr+" / "+uu+"\n")
self.insert_text_file(ss+"hmerominia - ora: "+y+" / "+w+"\n")


#kaleitai otan o piakths vrei th leksi
def sosti_leksi(self):
if self.w==self.p: #an h epilegmenh leksi 'w' einai ish me thn metabliti 'p' poy periexei ta sosta
#gramata poy vriskei o paikths
self.entrymin.set_text("Sugxarhthria, kerdises!!")
self.disable_keyboard(False)
self.image1.set_from_file('imgg/Kerdises.jpg')
s=self.categ+": "+str(1)+" nikh me "+str(6-self.m)+" prospatheies\n"
self.insert_text_file(s)

#apenergopoiei to plhktrologio
def disable_keyboard(self, valuebool):
for i in range(26):
self.list_button.set_sensitive(valuebool)

#apenergopoihsh button kathgorion
def disable_buttCateg(self, timi):
self.buttongeo.set_sensitive(timi)
self.buttonhist.set_sensitive(timi)
self.buttonnat.set_sensitive(timi)

#kaleitai otan o piakths den vrei th leksi
def lathos_leksi(self):
self.entrymin.set_text("Dystyxos exases. H sosth leksi einai: "+self.w)
self.disable_keyboard(False)
self.image1.set_from_file('imgg/exases.jpg')
rr=self.categ+": "+str(1)+" htta\n"
self.insert_text_file(rr)

#elegxei an to grama exei dothei ksana
def gr_again(self, g, lista):
for k in range(len(lista)): #h lista periexei ta gramata pou exoun do8ei hdh
if lista[k]==g:
return True

#kaleitai otan patithei kapoio grama
def add_letter(self,widget, grama):
self.gr=grama
self.entrymin.set_text("")
again=self.gr_again(self.gr, self.list_again)
if again==True:
self.entrymin.set_text("To gramma uparxei hdh. Dose allo gramma.")
else:
self.find_w()

#h synarthsh me oles tis leitourgies gia na brethei h leksi
def find_w(self):
self.list_again.append(self.gr) #vazei to grama sth lista me ta dosmena gramata
t=self.w.find(self.gr) #elegxei an to grama uparxei sth leksi
if t==-1: #an den uparxei
self.m=self.m-1 #meionei ton metrhth prospatheion
if self.m==0: #an einai mhden, emfanizei thn protash, emfanizei to la8os grama kai to skitso, kalei thn lathos_leksi
self.entryprot.set_text("Exeis "+str(self.m)+" prospatheies gia na breis th leksi")
self.entrygr.insert_text(self.gr+" ",len(self.entgr)-1)
self.image.set_from_file(self.make_image_name(0))
self.lathos_leksi()
elif self.m>0: #an einai megalytero tou mhdenos, emfanizei thn protash, emfanizei to la8os grama kai to skitso
self.entryprot.set_text("Exeis "+str(self.m)+" prospatheies gia na breis th leksi")
self.entrygr.insert_text(self.gr+" ",len(self.entgr)-1)
self.change_image()
else: #an uparxei to gramma kalei tis show_gr() kai sosti_leksi()
self.show_gr()
self.sosti_leksi()


#epistrefei thn kathgoria pou epelekse o paikths gia na graftei sto arxeio me ta stoixeia
def name_category(self, lista):
if lista==self.list_geo:
self.categ="geografia"
elif lista==self.list_hist:
self.categ="history"
elif lista==self.list_nat:
self.categ="periballon"
return self.categ

#vriskei kai epistrefei thn antistoixh erotisi analoga me thn epilegmenh leksi
def question(self, listakat):
q=""
if listakat==self.list_geo:
for i in range(7):
if self.list_geo==self.w:
q=self.list_question_geo
elif listakat==self.list_hist:
for i in range(7):
if self.list_hist==self.w:
q=self.list_question_hist
elif listakat==self.list_nat:
for i in range(7):
if self.list_nat==self.w:
q=self.list_question_nat
return q

#kaleitai otan path8ei button kapoias kathgorias
def random_word(self, widget, lista):
self.name_category(lista)
self.m=6
self.clear()
self.w=random.choice(lista)
n=len(self.w)
self.p="-"*n
iter=self.textbuffer2.get_iter_at_offset(0)
self.textbuffer2.insert(iter,self.p)
ques=self.question(lista)
self.textbuffer1.set_text(ques)

#katharizei thn othonh se kathe neo paixnidi
def clear(self):
self.entrygr.set_text(" ")
self.entrymin.set_text(" ")
self.entryprot.set_text("Exeis 6 prospatheies gia na breis th leksi")
self.textbuffer2.set_text(" ")
self.list_again=[]
self.image.set_from_file(self.make_image_name(6))
self.image1.set_from_file('imgg/skepsi.jpg')
self.disable_keyboard(True)

def main():
win = gtk.Window(gtk.WINDOW_TOPLEVEL)
KremalaActivity(win)
gtk.main()
return 0

if __name__ == "__main__":
main()

Hi, i'm trying to compile a .py file on eclipse using Pydev. I import in my code and pygtk. WHen i run it as 'Python Run' it terminates it.

I think it raise SystemExit when it imports 'gtk' and gobject'.....

Here is the code:

try : 
    import gtk
    import gobject
except:    
    raise SystemExit
import pygtk
if gtk.pygtk_version<(2.0):
    print "pygtk 2.0 or later require for this widget"
    raise SystemExit
import pango
import random
import time
from os import open
from datetime import date
from sugar.activity import activity

class KremalaActivity(activity.Activity):
           
    def __init__(self, handle):
        activity.Activity.__init__(self, handle)

        self.set_title("Kremala Activity")
        
# Show the toolbox elements
        toolbox = activity.ActivityToolbox(self)
        self.set_toolbox(toolbox)
        toolbox.show()  

        table=gtk.Table()
        table.set_homogeneous(False) 
        table.set_row_spacings(4)
        table.set_col_spacings(4)   

#listes me tis lekseis kai tis erotiseis
        self.list_geo=["constantinople", "vatican","taygetus","norway","olympus","himalaya", "caspian"]

        self.list_hist=["galille","mavrogenous","yalta","justinian","aristotle","helots","leonidas"]

        self.list_nat=["oxygen","chlorophyll","sarcophagus","herb","plankton","petroleum","deciduous"]

        self.list_question_geo=["einai h monadiki poli pou vrisketai anamesa se 2 xores",
                                        "europaiko kratos pou exei ektash molis miso tetragoniko xlm.",
                                        "se auto to bouno vriskotan o Kaiadas", "xora opou einai oi psiloteroi kataraktes tis Europis",
                                        "einai to psilotero vouno tis Elladas", "h upsiloterh korufh tou kosmou",
                                        "einai h megaluterh limnh ths ghs kai exei almuro nero"]

        self.list_question_hist=["eipe ti frash 'ki omos kineitai'.",
                                 "iroida ths ellinikis epanastashs pou ediokse o Kolleths apo to Nauplio",
                                 "diaskepsi stin opoia suzhththike i idrish tou OHE","vizantinos autokratoras",
                                 "daskalos tou M.Aleksandrou", "legontan oi douloi sthn arxaia Sparth",
                                 "vasilias ths Sparths pou eipe to gnosto <molon lave> "]
        
        self.list_question_nat=["xoris auto den uparxei zoi","aparaititi gia to xroma ton futon",
                                "einai to zoo pou trafetai mono me kreas","futo pou mporei na einai therapeutiko",
                                "trefontai ta psaria me auto", "paxureusto, mauro orukto pou apokaleitai kai <mauros xrusos> ",
                                "etsi legetai to dentro pou rixnei ta fulla tou to fthinoporo"]

#plaisio gia eisagogi onomatos
        entryname=gtk.Entry()
        entryname.modify_font(pango.FontDescription(str='sans bold 10'))
        entryname.set_max_length(100)
        self.entname=entryname.get_text()
       
        button_save=gtk.Button("save")
        button_save.connect("clicked",self.buttonsave)
        tooltips = gtk.Tooltips()
        tooltips.set_tip(button_save, "save the name")

#plaisio opou emfanizetai o kremasmenos an8ropos
        self.m=6
        vbox=gtk.VBox()
        event_box = gtk.EventBox()
        event_box.modify_bg(gtk.STATE_NORMAL, event_box.get_colormap().alloc_color("#75B844"))
        image = gtk.Image()
        image.set_from_file(self.make_image_name(self.m)) 
        self.image=image 
        event_box.add(self.image) 
        vbox.add(event_box)

#plaisio opou emfanizontai oi eikones me to prosopo analoga me to minima pou emfanizetai
        vbox1=gtk.VBox()
        event_box1= gtk.EventBox()
        event_box1.modify_bg(gtk.STATE_NORMAL, event_box1.get_colormap().alloc_color("#FFF333"))
        image1 = gtk.Image()
        image1.set_from_file('imgg/skepsi.jpg') 
        self.image1=image1 
        event_box1.add(self.image1) 
        vbox1.add(event_box1)	

#kathgories
        table_category=gtk.Table()
        table_category.set_homogeneous(False)
        table_category.set_row_spacings(2)
        table_category.set_col_spacings(2)
                            
        buttongeo=gtk.Button("GEOGRAFIA")
        buttongeo.connect("clicked", self.random_word, self.list_geo)
        tooltips = gtk.Tooltips()
        tooltips.set_tip(buttongeo, "BUTTON GEOGRAFIA")
        buttonhist=gtk.Button("ISTORIA")
        buttonhist.connect("clicked", self.random_word, self.list_hist)
        tooltips = gtk.Tooltips()
        tooltips.set_tip(buttonhist, "BUTTON ISTORIA")
        buttonnat=gtk.Button("PERIVALLON")
        buttonnat.connect("clicked", self.random_word, self.list_nat)
        tooltips = gtk.Tooltips()
        tooltips.set_tip(buttonnat, "BUTTON PERIVALLON")

        self.buttongeo=buttongeo
        self.buttonhist=buttonhist
        self.buttonnat=buttonnat
        
        table_category.attach(buttongeo,0,1,0,1)
        table_category.attach(buttonhist,0,1,1,2)
        table_category.attach(buttonnat,0,1,2,3)

#plaisio opou emfanizetai h eikona dipla stis kathgories
        vbox2=gtk.VBox()
        event_box2= gtk.EventBox()
        event_box2.modify_bg(gtk.STATE_NORMAL, event_box2.get_colormap().alloc_color("#75B844"))
        image2 = gtk.Image()
        image2.set_from_file('imgg/img_kategory.jpg') 
        self.image2=image2 
        event_box2.add(self.image2) 
        vbox2.add(event_box2)	

#plaisio opou emfanizetai h leksi
        textview2=gtk.TextView()  
        textview2.set_editable(False)
        textview2.set_cursor_visible(False)
        textview2.set_justification(gtk.JUSTIFY_CENTER)
        textview2.modify_font(pango.FontDescription(str='sans bold 18'))
        self.textbuffer2=textview2.get_buffer()

##plaisio opou emfanizontai ta la8os grammata		
        entrygr=gtk.Entry()
        entrygr.modify_font(pango.FontDescription(str='sans bold 16'))
        entrygr.set_max_length(13)
        self.entgr=entrygr.get_text()
        tooltips = gtk.Tooltips()
        tooltips.set_tip(entrygr, "edo emfanizontai ta lathos gramata")

#plaisio opou emfanizetai h erotisi
        textview1=gtk.TextView()  
        textview1.set_editable(False)
        textview1.set_cursor_visible(False)
        textview1.set_justification(gtk.JUSTIFY_LEFT)
        textview1.modify_font(pango.FontDescription(str='sans bold 8'))
        self.textbuffer1=textview1.get_buffer()

        labelname=gtk.Label("        onoma paikth:")
        labelname.modify_font(pango.FontDescription(str='sans bold 10'))
        labelname.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse('red'))

#plaisio opou emfanizontai ta analoga minimata
        entrymin=gtk.Entry()
        entrymin.modify_font(pango.FontDescription(str='sans bold 10'))
        entrymin.set_max_length(100)
        self.entmin=entrymin.get_text()

#plaisio opou emfanizontai oi prospa8eies
        entryprot=gtk.Entry()
        entryprot.modify_font(pango.FontDescription(str='sans bold 12'))
        entryprot.set_max_length(70)
        self.entprot=entryprot.get_text()
        
#dhmiourgei to plhktrologio me ta gramata
        pad=gtk.Table()
        table.set_homogeneous(False)
        pad.set_row_spacings(2)
        pad.set_col_spacings(1)
        but_a=gtk.Button('A')
        but_a.connect("clicked", self.add_letter, 'a')
        self.but_a=but_a
        but_b=gtk.Button('B')
        but_b.connect("clicked", self.add_letter, 'b')
        self.but_b=but_b
        but_c=gtk.Button('C')
        but_c.connect("clicked", self.add_letter, 'c')
        self.but_c=but_c
        but_d=gtk.Button('D')
        but_d.connect("clicked", self.add_letter, 'd')
        self.but_d=but_d
        but_e=gtk.Button('E')
        but_e.connect("clicked", self.add_letter, 'e')
        self.but_e=but_e
        but_f=gtk.Button('F')
        but_f.connect("clicked", self.add_letter, 'f')
        self.but_f=but_f
        but_g=gtk.Button('G')
        but_g.connect("clicked", self.add_letter, 'g')
        self.but_g=but_g
        but_h=gtk.Button('H')
        but_h.connect("clicked", self.add_letter, 'h')
        self.but_h=but_h
        but_i=gtk.Button('I')
        but_i.connect("clicked", self.add_letter, 'i')
        self.but_i=but_i
        but_j=gtk.Button('J')
        but_j.connect("clicked", self.add_letter, 'j')
        self.but_j=but_j
        but_k=gtk.Button('K')
        but_k.connect("clicked", self.add_letter, 'k')
        self.but_k=but_k
        but_l=gtk.Button('L')
        but_l.connect("clicked", self.add_letter, 'l')
        self.but_l=but_l
        but_m=gtk.Button('M')
        but_m.connect("clicked", self.add_letter, 'm')
        self.but_m=but_m
        but_n=gtk.Button('N')
        but_n.connect("clicked", self.add_letter, 'n')
        self.but_n=but_n
        but_o=gtk.Button('O')
        but_o.connect("clicked", self.add_letter, 'o')
        self.but_o=but_o
        but_p=gtk.Button('P')
        but_p.connect("clicked", self.add_letter, 'p')
        self.but_p=but_p
        but_q=gtk.Button('Q')
        but_q.connect("clicked", self.add_letter, 'q')
        self.but_q=but_q
        but_r=gtk.Button('R')
        but_r.connect("clicked", self.add_letter, 'r')
        self.but_r=but_r
        but_s=gtk.Button('S')
        but_s.connect("clicked", self.add_letter, 's')
        self.but_s=but_s
        but_t=gtk.Button('T')
        but_t.connect("clicked", self.add_letter, 't')
        self.but_t=but_t
        but_u=gtk.Button('U')
        but_u.connect("clicked", self.add_letter, 'u')
        self.but_u=but_u
        but_v=gtk.Button('V')
        but_v.connect("clicked", self.add_letter, 'v')
        self.but_v=but_v
        but_w=gtk.Button('W')
        but_w.connect("clicked", self.add_letter, 'w')
        self.but_w=but_w
        but_x=gtk.Button('X')
        but_x.connect("clicked", self.add_letter, 'x')
        self.but_x=but_x
        but_y=gtk.Button('Y')
        but_y.connect("clicked", self.add_letter, 'y')
        self.but_y=but_y
        but_z=gtk.Button('Z')
        but_z.connect("clicked", self.add_letter, 'z')
        self.but_z=but_z
        pad.attach(but_a,0,1,0,1)
        pad.attach(but_b,1,2,0,1)
        pad.attach(but_c,2,3,0,1)
        pad.attach(but_d,3,4,0,1)
        pad.attach(but_e,4,5,0,1)
        pad.attach(but_f,5,6,0,1)
        pad.attach(but_g,6,7,0,1)
        pad.attach(but_h,7,8,0,1)
        pad.attach(but_i,8,9,0,1)
        pad.attach(but_j,9,10,0,1)
        pad.attach(but_k,10,11,0,1)
        pad.attach(but_l,11,12,0,1)
        pad.attach(but_m,12,13,0,1)
        pad.attach(but_n,0,1,1,2)
        pad.attach(but_o,1,2,1,2)
        pad.attach(but_p,2,3,1,2)
        pad.attach(but_q,3,4,1,2)
        pad.attach(but_r,4,5,1,2)
        pad.attach(but_s,5,6,1,2)
        pad.attach(but_t,6,7,1,2)
        pad.attach(but_u,7,8,1,2)
        pad.attach(but_v,8,9,1,2)
        pad.attach(but_w,9,10,1,2)
        pad.attach(but_x,10,11,1,2)
        pad.attach(but_y,11,12,1,2)
        pad.attach(but_z,12,13,1,2)

#vazei ola ta widgets sto table
        table.attach(labelname,1,4,0,1)
        table.attach(entryname,4,5,0,1)
        table.attach(button_save,5,7,0,1)
        table.attach(vbox,0,2,0,4)
        table.attach(table_category,2,4,1,2)
        table.attach(vbox2,4,10,1,2)
        table.attach(textview2,2,10,2,3)
        table.attach(entrygr, 2,10,3,4)
        table.attach(textview1,0,10,4,5)
        table.attach(vbox1,0,1,5,6)
        table.attach(entrymin, 1,10,5,6)
        table.attach(entryprot, 0,10,6,7)
        table.attach(pad, 0,10,7,8)
##        
##        window.add(table)
##        window.show_all()
# vazei to table ston kamva tou sugar kai to emfanizei
        self.set_canvas(table)
        self.show_all()

        self.view2=textview2
        self.entrygr=entrygr
        self.entrymin=entrymin
        self.entryprot=entryprot
        self.entryname=entryname
        self.button_save=button_save
  
        self.image.set_from_file(self.make_image_name(6))
        self.list_button=[self.but_a, self.but_b,self.but_c,self.but_d,self.but_e,self.but_f,
                          self.but_g,self.but_h,self.but_i,self.but_j,self.but_k,self.but_l,
                          self.but_m,self.but_n,self.but_o,self.but_p,self.but_q,self.but_r,
                          self.but_s,self.but_t,self.but_u,self.but_v,self.but_w,self.but_x,
                          self.but_y,self.but_z]

        self.buttongeo.set_sensitive(False)
        self.buttonhist.set_sensitive(False)
        self.buttonnat.set_sensitive(False)
        self.disable_keyboard(False)
        self.entryprot.set_text("Exeis 6 prospatheies gia na breis th leksi")


#metavlites
        self.w=" "      #apithikeuetai h epilegmenh leksi
        self.p=" "      #apothikeuontai oi paules
        self.list_again=[]      #lista me ta gramata pou dinontai
        self.gr=' '     #to grama pou epilegei o xrhsths
        self.categ=" "

#epistrefei thn eikona
    def make_image_name(self, image_number):
        return "imgg/image" + str(image_number) + ".jpg"

#synarthsh poy allazei tis eikones analoga me thn timh tou metrhth m
    def change_image(self):
        for i in range(6):
            if self.m==i:
                self.image.set_from_file(self.make_image_name(i))
        return True

#vriskei ta gramata ths leksis
    def show_gr(self):
        new=""                #apothikeuetai h nea leksi
        for i in range(len(self.w)):   #to i pairnei times apo 0 mexri to mikos tis leksis
            if self.gr==self.w[i]:      #an to grama uparxei sth leksi
                new=new+self.gr     #to vazei sto new
            else:
                new=new+self.p[i]    #allios vazei paula, to p[] periexei paules
        self.p=new
        self.textbuffer2.set_text(new)     #emfanizei sto textview2 th nea leksi

#eisagei stoixeia sto arxeio elements_file.txt, to opoio periexei statistika stoixeia ton paikton
    def insert_text_file(self, strng):
        file_obj=' '
        file_obj=open("elements_file.txt", "a")    #anoigei to arxeio gia eisagogh stoixeion
        file_obj.write(strng)                              #grafei ta stoixeia
        file_obj.close()                                    #kleinei to arxeio

#otan path8ei to save, apo8ikeuontai kapoia stoixeia sto elements_file.txt
    def buttonsave(self,widget):
        self.disable_buttCateg(True)
        self.disable_keyboard(True)
        self.button_save.set_sensitive(False)    #apenergopoihsh tou button save, etsi oste ka8e neos paikths
#na apo8hkeuei mia fora to onoma tou oso exei anoixto to paixnidi
        ss=" "
        ss="\nonoma: "+self.entryname.get_text()+"\n"     #onoma paikth
        xronos=date.today()          #hmerominia
        y=xronos.strftime("%m-%d-%y")    #y=periexei thn hmerominis p.x. 03-05-09  
        u=time.localtime()              #ora
        w=time.strftime("%H:%M:%S", u)    #w=periexei thn ora p.x. 12:25:13
##        rr=str(y)
##        uu=str(w)
##        self.insert_text_file(ss+"hmerominia - ora: "+rr+" / "+uu+"\n")
        self.insert_text_file(ss+"hmerominia - ora: "+y+" / "+w+"\n")
        
        
#kaleitai otan o piakths vrei th leksi
    def sosti_leksi(self):
        if self.w==self.p:        #an h epilegmenh leksi 'w' einai ish me thn metabliti 'p' poy periexei ta sosta
#gramata poy vriskei o paikths
            self.entrymin.set_text("Sugxarhthria, kerdises!!")
            self.disable_keyboard(False)
            self.image1.set_from_file('imgg/Kerdises.jpg')
            s=self.categ+": "+str(1)+" nikh me "+str(6-self.m)+" prospatheies\n"
            self.insert_text_file(s)
            
#apenergopoiei to plhktrologio
    def disable_keyboard(self, valuebool):
        for i in range(26):
            self.list_button[i].set_sensitive(valuebool)

#apenergopoihsh button kathgorion
    def disable_buttCateg(self, timi):
        self.buttongeo.set_sensitive(timi)
        self.buttonhist.set_sensitive(timi)
        self.buttonnat.set_sensitive(timi)
            
#kaleitai otan o piakths den vrei th leksi
    def lathos_leksi(self):
        self.entrymin.set_text("Dystyxos exases. H sosth leksi einai: "+self.w)
        self.disable_keyboard(False)
        self.image1.set_from_file('imgg/exases.jpg') 
        rr=self.categ+": "+str(1)+" htta\n"
        self.insert_text_file(rr)
        
 #elegxei an to grama exei dothei ksana
    def gr_again(self, g, lista):
        for k in range(len(lista)):    #h lista periexei ta gramata pou exoun do8ei hdh
            if lista[k]==g:
                   return True    

#kaleitai otan patithei kapoio grama
    def add_letter(self,widget, grama):
        self.gr=grama
        self.entrymin.set_text("")
        again=self.gr_again(self.gr, self.list_again)
        if again==True:
            self.entrymin.set_text("To gramma uparxei hdh. Dose allo gramma.")
        else:
            self.find_w() 

#h synarthsh me oles tis leitourgies gia na brethei h leksi
    def find_w(self):
        self.list_again.append(self.gr)   #vazei to grama sth lista me ta dosmena gramata
        t=self.w.find(self.gr)         #elegxei an to grama uparxei sth leksi
        if t==-1:                          #an den uparxei
            self.m=self.m-1           #meionei ton metrhth prospatheion
            if self.m==0:               #an einai mhden, emfanizei thn protash, emfanizei to la8os grama kai to skitso, kalei thn lathos_leksi
                self.entryprot.set_text("Exeis "+str(self.m)+" prospatheies gia na breis th leksi")    
                self.entrygr.insert_text(self.gr+" ",len(self.entgr)-1)
                self.image.set_from_file(self.make_image_name(0))
                self.lathos_leksi()
            elif self.m>0:              #an einai megalytero tou mhdenos, emfanizei thn protash, emfanizei to la8os grama kai to skitso
                self.entryprot.set_text("Exeis "+str(self.m)+" prospatheies gia na breis th leksi")
                self.entrygr.insert_text(self.gr+" ",len(self.entgr)-1)
                self.change_image()
        else:                               #an uparxei to gramma kalei tis show_gr() kai sosti_leksi()
            self.show_gr()
            self.sosti_leksi()


#epistrefei thn kathgoria pou epelekse o paikths gia na graftei sto arxeio me ta stoixeia
    def name_category(self, lista):
        if lista==self.list_geo:
            self.categ="geografia"
        elif lista==self.list_hist:
            self.categ="history"
        elif lista==self.list_nat:
            self.categ="periballon"
        return self.categ

#vriskei kai epistrefei thn antistoixh erotisi analoga me thn epilegmenh leksi
    def question(self, listakat):
        q=""
        if listakat==self.list_geo:
            for i in range(7):
                if self.list_geo[i]==self.w:
                    q=self.list_question_geo[i]
        elif listakat==self.list_hist:
            for i in range(7):
                if self.list_hist[i]==self.w:
                    q=self.list_question_hist[i]
        elif listakat==self.list_nat:
            for i in range(7):
                if self.list_nat[i]==self.w:
                    q=self.list_question_nat[i]
        return q

#kaleitai otan path8ei button kapoias kathgorias
    def random_word(self, widget, lista):
        self.name_category(lista)
        self.m=6
        self.clear()
        self.w=random.choice(lista)
        n=len(self.w)
        self.p="-"*n
        iter=self.textbuffer2.get_iter_at_offset(0)
        self.textbuffer2.insert(iter,self.p)
        ques=self.question(lista)
        self.textbuffer1.set_text(ques)

#katharizei thn othonh se kathe neo paixnidi      
    def clear(self):
        self.entrygr.set_text(" ")
        self.entrymin.set_text(" ")
        self.entryprot.set_text("Exeis 6 prospatheies gia na breis th leksi")
        self.textbuffer2.set_text(" ")
        self.list_again=[]
        self.image.set_from_file(self.make_image_name(6))
        self.image1.set_from_file('imgg/skepsi.jpg')
        self.disable_keyboard(True)
            
def main():
    win = gtk.Window(gtk.WINDOW_TOPLEVEL)
    KremalaActivity(win)
    gtk.main()
    return 0
                                                  
if __name__ == "__main__":
    main()
This question has already been answered. Start a new discussion instead.