tkinter/lingvigilo.py
author viric@llimona
Thu, 18 May 2006 22:59:47 +0200
changeset 0 6371497b4e53
permissions -rwxr-xr-x
Init from svn. The wxpython is the final one.
viric@0
     1
#!/usr/bin/python
viric@0
     2
# -*- coding: utf-8 -*-
viric@0
     3
viric@0
     4
viric@0
     5
from Tkinter import *
viric@0
     6
from tkSimpleDialog import *
viric@0
     7
import sys,time,random,string,MySQLdb
viric@0
     8
viric@0
     9
# Configuració
viric@0
    10
legi_el = 'mysql'
viric@0
    11
viric@0
    12
# Conf - mysql
viric@0
    13
database = 'lingvigilo'
viric@0
    14
dbuser = 'lingvigilouser'
viric@0
    15
dbpass = 'carrinclo'
viric@0
    16
dbtable_vortoj = 'vortoj_ru_ca'
viric@0
    17
dbtable_frazoj = 'frazoj_ru_ca'
viric@0
    18
viric@0
    19
# Conf - fitxer
viric@0
    20
dbasefile = 'vortoj-ru-ca.txt'
viric@0
    21
frazodosiero = 'frazoj.txt'
viric@0
    22
viric@0
    23
# Prendre les paraules d'una base de dades MySQL
viric@0
    24
def getMySQL():
viric@0
    25
	db = MySQLdb.connect(host='vicerveza',user=dbuser,passwd=dbpass,
viric@0
    26
		db=database)
viric@0
    27
	cursor = db.cursor()
viric@0
    28
	cursor.execute("SELECT * FROM "+dbtable_vortoj)
viric@0
    29
	res_vortoj = cursor.fetchall()
viric@0
    30
	res_vortoj_unicode = []
viric@0
    31
	for vorto in res_vortoj:
viric@0
    32
		vorto_vorto = unicode(vorto[1],'utf8')
viric@0
    33
		vorto_tipo = unicode(vorto[2],'utf8')
viric@0
    34
		vorto_traduko = unicode(vorto[3],'utf8')
viric@0
    35
		
viric@0
    36
		# Paràmetres opcionals
viric@0
    37
		if vorto[4] == None:
viric@0
    38
			vorto_param1 = ''
viric@0
    39
		else:
viric@0
    40
			vorto_param1 = unicode(vorto[4],'utf8')
viric@0
    41
viric@0
    42
		if vorto[5] == None:
viric@0
    43
			vorto_param2 = ''
viric@0
    44
		else:
viric@0
    45
			vorto_param2 = unicode(vorto[5],'utf8')
viric@0
    46
viric@0
    47
		res_vortoj_unicode.append(
viric@0
    48
			(vorto_vorto, vorto_tipo, vorto_traduko,
viric@0
    49
			vorto_param1, vorto_param2))
viric@0
    50
	db.close()
viric@0
    51
	return res_vortoj_unicode
viric@0
    52
viric@0
    53
# Prendre les paraules d'un fitxer
viric@0
    54
def getFile():
viric@0
    55
	dbase = open(dbasefile,"r")
viric@0
    56
viric@0
    57
	lines = dbase.readlines()
viric@0
    58
	dbase.close()
viric@0
    59
viric@0
    60
	res_vortoj = []
viric@0
    61
	for line in lines:
viric@0
    62
		line = line.rstrip('\n')
viric@0
    63
		vortoj = string.split(unicode(line.rstrip('\n'),'utf8'),'\t')
viric@0
    64
		res_vortoj.append(vortoj)
viric@0
    65
viric@0
    66
	return res_vortoj
viric@0
    67
viric@0
    68
if legi_el == 'file':
viric@0
    69
	print "Legante vortojn el dosiero..."
viric@0
    70
	vortoj = getFile()
viric@0
    71
else:
viric@0
    72
	print "Legante vortojn el MySQLa datumbazo..."
viric@0
    73
	vortoj = getMySQL()
viric@0
    74
viric@0
    75
print "Legitaj", len(vortoj), "vortoj."
viric@0
    76
viric@0
    77
def AldoniFrazonDosieren(vorto,teksto):
viric@0
    78
	outfile = open(frazodosiero,"a")
viric@0
    79
viric@0
    80
	lineout = vorto + "\t" + teksto +"\n"
viric@0
    81
	outfile.write(lineout.encode('utf8'))
viric@0
    82
	
viric@0
    83
	outfile.close()
viric@0
    84
viric@0
    85
def AldoniFrazonDatumbazen(vorto,teksto):
viric@0
    86
	db = MySQLdb.connect(host='vicerveza',user=dbuser,passwd=dbpass,
viric@0
    87
		db=database)
viric@0
    88
	cursor = db.cursor()
viric@0
    89
	print ("INSERT INTO "+dbtable_frazoj+" (vorto, frazo)"
viric@0
    90
		" VALUES('%s', '%s');" % (vorto, teksto))
viric@0
    91
	cursor.execute("INSERT INTO "+dbtable_frazoj+" (vorto, frazo)"+
viric@0
    92
		" VALUES('%s', '%s');" % (vorto.encode('utf8'),
viric@0
    93
		teksto.encode('utf8')))
viric@0
    94
	db.close()
viric@0
    95
viric@0
    96
viric@0
    97
def LoopFunction():
viric@0
    98
	index = random.randint(0, len(vortoj)-1)
viric@0
    99
	vorto = vortoj[index][0]
viric@0
   100
	teksto = askstring("Frazilon", "Skribu frazon por vorto '%s'" % vorto)
viric@0
   101
	if teksto == None:
viric@0
   102
		print 'Fi del programa'
viric@0
   103
		sys.exit()
viric@0
   104
	AldoniFrazonDatumbazen(vorto, teksto)
viric@0
   105
	root.after(1*1000,LoopFunction)
viric@0
   106
viric@0
   107
viric@0
   108
# Main program
viric@0
   109
root=Tk()
viric@0
   110
root.after(10,LoopFunction)
viric@0
   111
Message(root, text='Programo por lerni lingvon').pack();
viric@0
   112
root.mainloop()