Forum » Programiranje » python -slovar
python -slovar
Valex86 ::
Lep pozdrav!
Narediti morem slovar v pythonu. Moram imeti okno za vnos besed in razlag, ki se bodo shranjevale v neko text datoteko in okno v katerega bo uporabnik napisal željeno besedo in se mu bo izpisala razlaga te besede. če besede ni v datoteki javi napako.
Prosim za pomoč. Vsak nasvet bo prišel prav.
Hvala
Narediti morem slovar v pythonu. Moram imeti okno za vnos besed in razlag, ki se bodo shranjevale v neko text datoteko in okno v katerega bo uporabnik napisal željeno besedo in se mu bo izpisala razlaga te besede. če besede ni v datoteki javi napako.
Prosim za pomoč. Vsak nasvet bo prišel prav.
Hvala
Valex86 ::
Hvala malo je že pomagalo. Kako pa lahko naredim kot nek grafični vmesnik, da bi uporabnik lahko dodal besedo ali pa jo poiskal?
PromeuZ ::
http://wiki.python.org/moin/TkInter
http://www.pythonware.com/library/tkint...
http://docs.python.org/library/tkinter....
http://www.pythonware.com/library/tkint...
http://docs.python.org/library/tkinter....
<!-- https://pisalnik.wordpress.com -->
professor ::
uporabi PyQt če misliš še naprej kaj programirati, PromeuZ-jev predlog z Tcl/Tk ki je v pythonu prikazan kot tkinter ni slaba ideja
Valex86 ::
Lep pozdrav!
Kaj mi lahko napišete prosim postopek kako namestiti pyQt?
Najlepša hvala
Kaj mi lahko napišete prosim postopek kako namestiti pyQt?
Najlepša hvala
Zgodovina sprememb…
- spremenil: Valex86 ()
Valex86 ::
Lep pozdrav!
Prosim za pomoč. Osnovo za slovar sem si že naredila sedaj pa nevem kako na naredim z besedami da mi jih prevede
from Tkinter import*
jeziki=("slo", "ang", "nem")
def pretvori():
if(b.get()==jeziki[0] and c.get()==jeziki[1]):
slo_v_ang()
if(b.get()==enote[0] and c.get()==enote[2]):
slo_v_nem()
if(b.get()==enote[1] and c.get()==enote[0]):
ang_v_slo()
if(b.get()==enote[1] and c.get()==enote[2]):
ang_v_nem()
if(b.get()==enote[2] and c.get()==enote[0]):
nem_v_slo()
if(b.get()==enote[2] and c.get()==enote[1]):
nem_v_ang()
def slo_v_ang():
s.set(str()
def slo_v_nem():
s.set(str()
def ang_v_slo():
s.set(str()
def ang_v_nem():
s.set(str()
def nem_v_slo()
s.set(str()
def nem_v_ang():
s.set(str()
okno=Tk()
okno.title('SLOVAR')
oznaka=Label(okno,text='Vnesi besedo')
oznaka.pack()
a=Entry(okno)
a.pack()
oznaka1=Label(okno,text='Izberi jezik v katrem si napisal besedo')
oznaka1.pack()
b=Entry(okno)
b.pack()
oznaka3=Label(okno,text='Izberi jezik v katerega želiš pretvoriti besedc)
oznaka3.pack()
c=Entry(okno)
c.pack()
pretvarjaj=Button(okno,text='Pretvori',command=pretvori)
pretvarjaj.pack()
s=StringVar()
d=Label(okno,textvariable=s)
d.pack()
okno.mainloop()
Prosim za pomoč. Osnovo za slovar sem si že naredila sedaj pa nevem kako na naredim z besedami da mi jih prevede
from Tkinter import*
jeziki=("slo", "ang", "nem")
def pretvori():
if(b.get()==jeziki[0] and c.get()==jeziki[1]):
slo_v_ang()
if(b.get()==enote[0] and c.get()==enote[2]):
slo_v_nem()
if(b.get()==enote[1] and c.get()==enote[0]):
ang_v_slo()
if(b.get()==enote[1] and c.get()==enote[2]):
ang_v_nem()
if(b.get()==enote[2] and c.get()==enote[0]):
nem_v_slo()
if(b.get()==enote[2] and c.get()==enote[1]):
nem_v_ang()
def slo_v_ang():
s.set(str()
def slo_v_nem():
s.set(str()
def ang_v_slo():
s.set(str()
def ang_v_nem():
s.set(str()
def nem_v_slo()
s.set(str()
def nem_v_ang():
s.set(str()
okno=Tk()
okno.title('SLOVAR')
oznaka=Label(okno,text='Vnesi besedo')
oznaka.pack()
a=Entry(okno)
a.pack()
oznaka1=Label(okno,text='Izberi jezik v katrem si napisal besedo')
oznaka1.pack()
b=Entry(okno)
b.pack()
oznaka3=Label(okno,text='Izberi jezik v katerega želiš pretvoriti besedc)
oznaka3.pack()
c=Entry(okno)
c.pack()
pretvarjaj=Button(okno,text='Pretvori',command=pretvori)
pretvarjaj.pack()
s=StringVar()
d=Label(okno,textvariable=s)
d.pack()
okno.mainloop()
FrEaKmAn ::
a se men samo zdi al tukaj velik del kode manjka? npr
pa je potrebno imeti za vsako pretvorbo prav svojo metodo?
s.set(str()
pa je potrebno imeti za vsako pretvorbo prav svojo metodo?
Valex86 ::
from Tkinter import*
jeziki=("slo", "ang", "nem")
def pretvori():
if(b.get()==jeziki[0] and c.get()==jeziki[1]):
slo_v_ang()
if(b.get()==jeziki[0] and c.get()==jeziki[2]):
slo_v_nem()
if(b.get()==jeziki[1] and c.get()==jeziki[0]):
ang_v_slo()
if(b.get()==jeziki[1] and c.get()==jeziki[2]):
ang_v_nem()
if(b.get()==jeziki[2] and c.get()==jeziki[0]):
nem_v_slo()
if(b.get()==jeziki[2] and c.get()==jeziki[1]):
nem_v_ang()
def slo_v_ang():
s.set(str(int(a.get())*100)+jeziki[1])
def slo_v_nem():
s.set(str(int(a.get())*1000)+jeziki[2])
def ang_v_slo():
s.set(str(float(a.get())/100)+jeziki[0])
def ang_v_nem():
s.set(str(int(a.get())*10)+jeziki[2])
def nem_v_slo()
s.set(str(float(a.get())/1000)+jeziki[0])
def nem_v_ang():
s.set(str(float(a.get())/10)+jeziki[1])
okno=Tk()
okno.title('SLOVAR')
oznaka=Label(okno,text='Vnesi besedo')
oznaka.pack()
a=Entry(okno)
a.pack()
oznaka1=Label(okno,text='Izberi jezik v katrem si napisal besedo')
oznaka1.pack()
b=Entry(okno)
b.pack()
oznaka3=Label(okno,text='Izberi jezik v katerega želiš pretvoriti besedc)
oznaka3.pack()
c=Entry(okno)
c.pack()
pretvarjaj=Button(okno,text='Pretvori',command=pretvori)
pretvarjaj.pack()
s=StringVar()
d=Label(okno,textvariable=s)
d.pack()
okno.mainloop()
Manjka mi koda, ker ne vem kak naj naredim da bo prevajal oz kam naj napišem slovenske, angleške in nemške besede in jih pol ko uporabnik napiše eno besedo pretvori v angleščino, nem ali pa slo.
Zgodovina sprememb…
- spremenil: Mavrik ()
x3ca ::
Ne da se mi razlagat, ti pa priložim kodo, kako bi se jaz lotla. Bi mogla bit sama po sebi dovolj razumljiva, če ne pa vprašaj:
Preveri in če sporoči če dela, mal sm že out iz pythona :)
jeziki=['slo','eng','nem'] besede=[] besede.append(['ena', 'dva', 'tri']) besede.append(['one', 'two', 'three']) besede.append(['eins', 'zwei', 'drei']) iskana_beseda='tri' prevedi_iz='slo' prevedi_v='eng' print besede[jeziki.index(prevedi_v)][besede[jeziki.index(prevedi_iz)].index(iskana_beseda)]
Preveri in če sporoči če dela, mal sm že out iz pythona :)
Zgodovina sprememb…
- spremenil: Mavrik ()
Valex86 ::
from Tkinter import *
j=("slo", "ang", "nem")
def pretvori():
if(b.get()==j[0] and c.get()==j[1]):
slo_v_ang()
if(b.get()==j[0] and c.get()==j[2]):
slo_v_nem()
if(b.get()==j[1] and c.get()==j[0]):
ang_v_slo()
if(b.get()==j[1] and c.get()==j[2]):
ang_v_nem()
if(b.get()==j[2] and c.get()==j[0]):
nem_v_slo()
if(b.get()==j[2] and c.get()==j[1]):
nem_v_ang()
slo="ena,dva,tri,štiri,pet"
ang="one,two,three,four,five"
nem="eins,zwei,drei,vier,fünf"
okno=Tk()
okno.title('Slovar')
oznaka=Label(okno,text='Vnesi besedo')
oznaka.pack()
a=Entry(okno)
a.pack()
b=StringVar()
c=StringVar()
opti1=OptionMenu(okno, b, 'slo', 'ang', 'nem')
opti2=OptionMenu(okno, c, 'slo', 'ang', 'nem')
opti1.pack(fill=X)
opti2.pack(fill=X)
b.set('nem')
c.set('ang')
pret=Button(okno,text='Pretvori',command=pretvori)
pret.pack()
s=StringVar()
d=Label(okno,textvariable=s)
d.pack()
okno.mainloop()
Program mi izriše okno za vnos ter pretvorbe potem pa nevem kak naj naredim, da bo vedel kaj more prevest. Ker zaj če vpišem besedo napiše da ni definirano
j=("slo", "ang", "nem")
def pretvori():
if(b.get()==j[0] and c.get()==j[1]):
slo_v_ang()
if(b.get()==j[0] and c.get()==j[2]):
slo_v_nem()
if(b.get()==j[1] and c.get()==j[0]):
ang_v_slo()
if(b.get()==j[1] and c.get()==j[2]):
ang_v_nem()
if(b.get()==j[2] and c.get()==j[0]):
nem_v_slo()
if(b.get()==j[2] and c.get()==j[1]):
nem_v_ang()
slo="ena,dva,tri,štiri,pet"
ang="one,two,three,four,five"
nem="eins,zwei,drei,vier,fünf"
okno=Tk()
okno.title('Slovar')
oznaka=Label(okno,text='Vnesi besedo')
oznaka.pack()
a=Entry(okno)
a.pack()
b=StringVar()
c=StringVar()
opti1=OptionMenu(okno, b, 'slo', 'ang', 'nem')
opti2=OptionMenu(okno, c, 'slo', 'ang', 'nem')
opti1.pack(fill=X)
opti2.pack(fill=X)
b.set('nem')
c.set('ang')
pret=Button(okno,text='Pretvori',command=pretvori)
pret.pack()
s=StringVar()
d=Label(okno,textvariable=s)
d.pack()
okno.mainloop()
Program mi izriše okno za vnos ter pretvorbe potem pa nevem kak naj naredim, da bo vedel kaj more prevest. Ker zaj če vpišem besedo napiše da ni definirano
technolog ::
Ne da se mi razlagat, ti pa priložim kodo, kako bi se jaz lotla. Bi mogla bit sama po sebi dovolj razumljiva, če ne pa vprašaj:
jeziki=['slo','eng','nem']
besede=[]
besede.append(['ena', 'dva', 'tri'])
besede.append(['one', 'two', 'three'])
besede.append(['eins', 'zwei', 'drei'])
iskana_beseda='tri'
prevedi_iz='slo'
prevedi_v='eng'
print besede[jeziki.index(prevedi_v)][besede[jeziki.index(prevedi_iz)].index(iskana_beseda)]
Preveri in če sporoči če dela, mal sm že out iz pythona :)
Pregledno, vendar počasno. Iskanje v O(n), ki bo pa lahko bilo O(log n) ali celo O(1).
Valex86 ::
http://www.facebook.com/photo.php?fbid=...
To moram sprogramirati v pythonu tkinter modul.
Vsak nasvet pride prav!
hvala
To moram sprogramirati v pythonu tkinter modul.
Vsak nasvet pride prav!
hvala
Zgodovina sprememb…
- spremenil: Valex86 ()
FrEaKmAn ::
tuki je par dobrih primerov za delo
http://www.ittc.ku.edu/~niehaus/classes...
začni in pa javi ko se ti zalomi...
http://www.ittc.ku.edu/~niehaus/classes...
začni in pa javi ko se ti zalomi...
Valex86 ::
import wx
import time
import sys,traceback
from string import strip
import data
#
AppTitle = 'Slovar2012'
iSlovar=0
class frmInsert_Slovar(wx.Frame):
def __init__(self, caller_frmInsert, title=""):
wx.Frame.__init__(self, None, -1, '',
style = wx.DEFAULT_FRAME_STYLE^(wx.RESIZE_BORDER|wx.MINIMIZE_BOX|wx.MAXIMIZE_BOX))
self.caller = caller_frmInsert
self.Bind(wx.EVT_CLOSE, self.OnExit)
panel = wx.Panel(self)
#Widgets
#vnos nove
self.stA = wx.StaticText(panel, wx.ID_ANY, 'Angleška beseda')
self.txA = wx.TextCtrl(panel, wx.ID_ANY, "",size=(100, -1))
self.txA.Bind(wx.EVT_TEXT, self.OnUpperCaseText)
self.stS = wx.StaticText(panel, wx.ID_ANY, 'Slovenska beseda')
self.txS = wx.TextCtrl(panel, wx.ID_ANY, "",size=(100, -1))
self.txS.Bind(wx.EVT_TEXT, self.OnUpperCaseText)
self.StaticSizer = wx.StaticBox(panel,wx.ID_ANY,"")
self.bntSave = wx.Button(panel, wx.ID_ANY, "&Shrani")
self.bntSave.SetToolTipString('Shrani!')
self.Bind(wx.EVT_BUTTON, self.OnSave, self.bntSave)
self.bntClose = wx.Button(panel, wx.ID_ANY, "&Zapri")
self.bntClose.SetToolTipString('Zapri!')
self.Bind(wx.EVT_BUTTON, self.OnExit, self.bntClose)
#Sizers
mainSizer = wx.BoxSizer(wx.HORIZONTAL)
textSizer = wx.FlexGridSizer(cols=2, hgap=5, vgap=5)
buttonSizer = wx.StaticBoxSizer(self.StaticSizer,wx.VERTICAL)
#Assign widgets to sizers
#buttonSizer
textSizer.Add(self.stA, 0)
textSizer.Add(self.txA, 0)
textSizer.Add(self.stS, 0)
textSizer.Add(self.txS, 0)
#buttonSizer
buttonSizer.Add(self.bntSave)
buttonSizer.Add((5,5),-1)
buttonSizer.Add(self.bntClose)
#Assign to mainSizer the other sizers.
mainSizer.Add(textSizer, 0,wx.ALL, 10)
mainSizer.Add(buttonSizer, 0,wx.ALL, 10)
#Assign to panel the mainSizer
panel.SetSizer(mainSizer)
mainSizer.Fit(self)
mainSizer.SetSizeHints(self)
def FieldsControl(self):
#če ni oboje izpolnjeno
if len(self.txA.GetValue())==0:
wx.MessageBox("Nekaj manjka!",
AppTitle, wx.OK|wx.ICON_INFORMATION)
self.txA.SetFocus()
return 0
elif len(self.txS.GetValue())==0:
wx.MessageBox("Manjka!",
AppTitle, wx.OK|wx.ICON_INFORMATION)
return 0
def OnSave(self,event):
if self.FieldsControl()==0:
return
else:
sMessage = "Shranim besedo?"
dlgAsk = wx.MessageDialog(None,sMessage,
AppTitle,wx.YES_NO|wx.ICON_QUESTION)
retCode = dlgAsk.ShowModal()
if (retCode == wx.ID_YES):
sA = str(self.txA.GetValue())
sA =''.join(sA.strip().split())
sS = str(self.txS.GetValue())
sS =''.join(sS.strip().split())
#pripravim, nardim bazo
InsertParameters = (sA,sS)
sSQL="INSERT INTO Slovar (Angleška,Slovenska) VALUES (?,?)"
#vnesem parametre v sql bazo
data.OnQueryUpdate(sSQL,InsertParameters)
self.caller.OnUpdateList()
wx.MessageBox("Vstavitev nove besede!",
AppTitle, wx.OK|wx.ICON_INFORMATION)
elif (retCode == wx.ID_NO):
wx.MessageBox("Vstavljanje preklicano!",
AppTitle, wx.OK|wx.ICON_INFORMATION)
dlgAsk.Destroy()
self.OnExit(self)
def OnUpperCaseText(self, event):
wdgControl = event.GetEventObject()
retValue = wdgControl.GetValue()
upValue = retValue.upper()
if retValue <> upValue:
wdgControl.SetValue(upValue)
wdgControl.SetInsertionPointEnd()
event.Skip()
def OnExit(self,event):
self.Destroy()
class frmUpdate_Slovar(wx.Frame):
def __init__(self, caller_frmUpdate, title=""):
wx.Frame.__init__(self, None, -1, title, size=(400,200))
self.caller = caller_frmUpdate
#nastavitev nekaj lastnosti okvirja
#self.SetIcon(wx.Icon("myicon.ico",wx.BITMAP_TYPE_ICO))
self.Bind(wx.EVT_CLOSE, self.OnExit)
panel = wx.Panel(self)
#Widgets za stolpce
self.stBesedaID = wx.StaticText(panel, wx.ID_ANY, 'IDBeseda') #številke
self.txBesedaID = wx.TextCtrl(panel, wx.ID_ANY, "",size=(50, -1),style=wx.TE_READONLY|wx.TE_CENTRE)
self.txBesedaID.SetBackgroundColour('white')
self.stA = wx.StaticText(panel, wx.ID_ANY, 'Angleška beseda')
self.txA = wx.TextCtrl(panel, wx.ID_ANY, "",size=(100, -1))
self.txA.Bind(wx.EVT_TEXT, self.OnUpperCaseText)
self.stS = wx.StaticText(panel, wx.ID_ANY, 'Slovenska beseda')
self.txS = wx.TextCtrl(panel, wx.ID_ANY, "",size=(100, -1))
self.txS.Bind(wx.EVT_TEXT, self.OnUpperCaseText)
self.StaticSizer = wx.StaticBox(panel,wx.ID_ANY,"")
self.bntSave = wx.Button(panel, wx.ID_ANY, "&Shrani")
self.bntSave.SetToolTipString('Shrani!')
self.Bind(wx.EVT_BUTTON, self.OnSave, self.bntSave)
self.bntClose = wx.Button(panel, wx.ID_ANY, "&Zapri")
self.bntClose.SetToolTipString('Zapri!')
self.Bind(wx.EVT_BUTTON, self.OnExit, self.bntClose)
#Sizers
mainSizer = wx.BoxSizer(wx.HORIZONTAL)
textSizer = wx.FlexGridSizer(cols=2, hgap=5, vgap=5)
buttonSizer = wx.StaticBoxSizer(self.StaticSizer,wx.VERTICAL)
#zvežem
#textSizer
textSizer.Add(self.stBesedaID, 0)
textSizer.Add(self.txBesedaID, 0)
textSizer.Add(self.stA, 0)
textSizer.Add(self.txA, 0)
textSizer.Add(self.stS, 0)
textSizer.Add(self.txS, 0)
#buttonSizer
buttonSizer.Add(self.bntSave)
buttonSizer.Add((5,5),-1)
buttonSizer.Add(self.bntClose)
#pripišem mainSizer ostale
mainSizer.Add(textSizer, 0,wx.ALL, 10)
mainSizer.Add(buttonSizer, 0,wx.ALL, 10)
#prip panel mainSizer
panel.SetSizer(mainSizer)
mainSizer.Fit(self)
mainSizer.SetSizeHints(self)
def FieldsControl(self):
if len(self.txA.GetValue())==0:
wx.MessageBox("PRAZNO POLJE!",
AppTitle, wx.OK|wx.ICON_INFORMATION)
self.txA.SetFocus()
return 0
elif len(self.txSlovenska.GetValue())==0:
wx.MessageBox("PRAZNO POLJE!",
AppTitle, wx.OK|wx.ICON_INFORMATION)
return 0
def OnSave(self,event):
if self.FieldsControl()==0:
return
else:
sMessage = "Shranim spremenjene podatke?"
dlgAsk = wx.MessageDialog(None,sMessage,
AppTitle,wx.YES_NO|wx.ICON_QUESTION)
retCode = dlgAsk.ShowModal()
if (retCode == wx.ID_YES):
sBesedaID = str(self.txBesedaID.GetValue())
sA = str(self.txA.GetValue())
sA =''.join(sA.strip().split())
sS = str(self.txS.GetValue())
sS =''.join(sS.strip().split())
UpdateParameters = (sA,sS,sBesedaID)
sSQL='UPDATE Slovar SET Angleska = ?,Slovenska = ? WHERE BesedaID=?'
#posodobi bazo
data.OnQueryUpdate(sSQL,UpdateParameters)
self.caller.OnUpdateList()
wx.MessageBox("Podatki o besedi posodobljeni!",
AppTitle, wx.OK|wx.ICON_INFORMATION)
elif (retCode == wx.ID_NO):
wx.MessageBox("Preklicano posodabljanje!",
AppTitle, wx.OK|wx.ICON_INFORMATION)
dlgAsk.Destroy()
self.OnExit(self)
def OnUpperCaseText(self, event):
wdgControl = event.GetEventObject()
retValue = wdgControl.GetValue()
upValue = retValue.upper()
if retValue <> upValue:
wdgControl.SetValue(upValue)
wdgControl.SetInsertionPointEnd()
event.Skip()
def OnExit(self,event):
self.Destroy()
class frmSlovar(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, '',size=(600,400),style = wx.DEFAULT_FRAME_STYLE^(wx.RESIZE_BORDER|wx.MINIMIZE_BOX|wx.MAXIMIZE_BOX))
#nstavitve okvirja
self.SetTitle('Angleško slovenski slovar')
self.Bind(wx.EVT_CLOSE, self.OnExit)
panel = wx.Panel(self)
#menu
mnuFile = wx.Menu()
mnuInfo = wx.Menu()
#mnuFile
menuitem = mnuFile.Append(-1, "&Izhod", "Zapri!")
self.Bind(wx.EVT_MENU, self.OnExit, menuitem)
#menu bar
menubar = wx.MenuBar()
#add nemu voices
menubar.Append(mnuFile, "&Datoteka")
#menubar.Append(mnuInfo, "I&nfo")
self.SetMenuBar(menubar)
#Statusbar
self.myStatusBar = self.CreateStatusBar(1,wx.ST_SIZEGRIP)
self.myStatusBar.SetFieldsCount(2)
self.myStatusBar.SetStatusWidths([-8, -4])
self.myStatusBar.SetStatusText('',0)
self.myStatusBar.SetStatusText('Slovar2012',1)
#Widgets
self.stSlovar = wx.StaticText(panel, -1, "Anglesko slovenski slovar")
self.lstSlovar = wx.ListCtrl(panel, -1, style=wx.LC_REPORT, size=(300,300),pos=(0,0))
self.lstSlovar.SetToolTipString('S klikom izberi besedo')
#Intercept click na wx.ListCtrl
self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected,self.lstSlovar)
#stolpci
self.lstSlovar.InsertColumn(0, 'BesedaID', wx.LIST_AUTOSIZE)
self.lstSlovar.InsertColumn(1, 'Angleska', wx.LIST_AUTOSIZE)
self.lstSlovar.InsertColumn(2, 'Slovenska', wx.LIST_AUTOSIZE)
self.stSearch = wx.StaticText(panel, -1, "IŠČI")
self.txSearch = wx.TextCtrl(panel, -1, "",size=(100, -1))
self.txSearch.SetToolTipString('Išči besedo!')
self.txSearch.Bind(wx.EVT_TEXT, self.OnUpperCaseText)
self.StaticSizer = wx.StaticBox(panel,wx.ID_ANY,"Ukazi")
self.bntSearch = wx.Button(panel, -1, "&Išči")
self.bntSearch.SetToolTipString('Išči besedo!')
self.Bind(wx.EVT_BUTTON, self.OnSearch, self.bntSearch)
self.bntClear = wx.Button(panel, -1, "&Izbriši vse")
self.bntClear.SetToolTipString('Zbriši iskani tekst!')
self.Bind(wx.EVT_BUTTON, self.OnClear, self.bntClear)
self.bntShowAll = wx.Button(panel, -1, "&Vse besede")
self.bntShowAll.SetToolTipString('Pokaži vse!')
self.Bind(wx.EVT_BUTTON, self.OnShowAll, self.bntShowAll)
self.bntNew = wx.Button(panel, -1, "&Vnesi novo")
self.bntNew.SetToolTipString('Vnesi novo besedo!')
self.Bind(wx.EVT_BUTTON, self.OnNew, self.bntNew)
self.bntEdit = wx.Button(panel, -1, "&Posodobi")
self.bntEdit.SetToolTipString('Posodobi izbrano besedo!')
self.Bind(wx.EVT_BUTTON, self.OnEdit, self.bntEdit)
self.bntDelete = wx.Button(panel, -1, "&Izbriši")
self.bntDelete.SetToolTipString('Izbriši izbrano besedo!')
self.Bind(wx.EVT_BUTTON, self.OnDelete, self.bntDelete)
self.bntClose = wx.Button(panel, -1, "&Zapri")
self.bntClose.SetToolTipString('Zapri dov!')
self.Bind(wx.EVT_BUTTON, self.OnExit, self.bntClose)
#dobi pod iz baze
BesedaData = OnLoadData(self)
#poselji wx.ListCtrl
for i in BesedaData:
index = self.lstSlovar.InsertStringItem(sys.maxint, (strip(str(i[0]))))
self.lstSlovar.SetStringItem(index, 1, i[1])
self.lstSlovar.SetStringItem(index, 2, i[2])
#Sizer
mainSizer = wx.BoxSizer(wx.HORIZONTAL)
textSizer = wx.BoxSizer(wx.VERTICAL)
btnSizer = wx.StaticBoxSizer(self.StaticSizer,wx.VERTICAL)
#textSizer
textSizer.Add(self.stSlovar)
textSizer.Add(self.lstSlovar)
#btnSizer
btnSizer.Add(self.stSearch)
btnSizer.Add(self.txSearch)
btnSizer.Add((5,5),-1)
btnSizer.Add(self.bntSearch,0,wx.ALL,5)
btnSizer.Add((5,5),-1)
btnSizer.Add(self.bntClear,0,wx.ALL,5)
btnSizer.Add((5,5),-1)
btnSizer.Add(self.bntShowAll,0,wx.ALL,5)
btnSizer.Add((5,5),-1)
btnSizer.Add(self.bntNew,0,wx.ALL,5)
btnSizer.Add((5,5),-1)
btnSizer.Add(self.bntEdit,0,wx.ALL,5)
btnSizer.Add((5,5),-1)
btnSizer.Add(self.bntDelete,0,wx.ALL,5)
btnSizer.Add((5,5),-1)
btnSizer.Add(self.bntClose,0,wx.ALL,5)
mainSizer.Add(textSizer, 0,wx.ALL, 10)
mainSizer.Add(btnSizer, 0,wx.ALL, 10)
panel.SetSizer(mainSizer)
mainSizer.Fit(self)
mainSizer.SetSizeHints(self)
#Event handling
def OnDelete(self,event):
global iSlovar
sSQL='DELETE FROM Slovar WHERE BesedaID = ? '
data.OnQueryUpdate(sSQL,iSlovar)
self.OnShowAll(self)
wx.MessageBox("Zbrisano iz baze",
AppTitle, wx.OK|wx.ICON_INFORMATION)
def OnUpdateList(self):
self.OnShowAll(self)
def OnShowAll(self,event):
sSQL='SELECT * FROM Slovar WHERE BesedaID LIKE ? '
sSearch = '%'
self.OnRetriveData(sSQL,sSearch)
self.myStatusBar.SetStatusText('Slovar2012',1)
self.OnClear(self)
def OnClear(self,event):
global iSlovar
self.txSearch.Clear()
self.txSearch.SetFocus()
iSlovar = 0
def OnSearch(self,event):
sSearch = str(self.txSearch.GetValue())
#brez presledkov
sSearch =''.join(sSearch.strip().split())
#dodaj & simbol za iskanje na silo
if sSearch =='%' :
wx.MessageBox("prazno!",
AppTitle, wx.OK|wx.ICON_INFORMATION)
self.txSearch.SetFocus()
return
else:
sSQL='SELECT * FROM Slovar WHERE ?=Angleska'
self.OnRetriveData(sSQL,sSearch)
def OnRetriveData(self,sSQL,IDParameter):
global iSlovar
#zbriše vse
self.lstSlovar.SetFocus()
self.lstSlovar.DeleteAllItems()
#pridobi podatke iz data modula
BesedaData = data.OnQueryParmeter(sSQL,IDParameter)
#poselji listbox
if BesedaData:
for i in BesedaData:
index = self.lstSlovar.InsertStringItem(sys.maxint, (strip(str(i[0]))))
self.lstSlovar.SetStringItem(index, 1, (strip(str(i[1]))))
self.lstSlovar.SetStringItem(index, 2, (strip(str(i[2]))))
else:
wx.MessageBox("Ni podatka!",
AppTitle, wx.OK|wx.ICON_INFORMATION)
def OnEdit(self,event):
global iSlovar
#It means that we haven't select an employee.
if iSlovar ==0:
wx.MessageBox("Izberi besedo!",
AppTitle, wx.OK|wx.ICON_INFORMATION)
return
else:
sSQL='SELECT * FROM Slovar WHERE BesedaID = ?'
self.OnOpenEdit(sSQL,iSlovar)
def OnNew(self,event):
try:
#Create an istance of the Child_Frame
self.frmInsert = self.frmInsert = frmInsert_Slovar(caller_frmInsert=self)
sTitle = 'Vnesi novo besedo'
self.frmInsert.SetTitle(sTitle)
self.frmInsert.Show()
self.frmInsert.Center()
except:
sModule = 'Module: slovar.py'
sFunction ='Function: OnNew'
sParameter ='Input parameter: Nothing '
excValue = 'Exception value:%s ' %(str(sys.exc_value))
excType = 'Exception type:%s ' %(str(sys.exc_type))
logTime = time.localtime(time.time())
FormatlogTime = time.strftime("%d/%m/%Y %H:%M:%S", logTime)
sFormatLog = ("Data: %s" % (FormatlogTime))
fLog = open('log.txt','a')
sReportException=(sFormatLog,sModule,sFunction,sParameter,excValue,excType)
fLog.write(sReportException)
fLog.close()
wx.MessageBox("Pozor!\n%s\n%s\n%s\n%s\n%s\n%s" % (sModule,
sFunction,
sParameter,
sFormatLog,
excValue
,excType), AppTitle, wx.OK|wx.ICON_ERROR)
def OnOpenEdit(self,sSQL,sParameter):
try:
rsSlovar = data.OnQueryParmeter(sSQL,sParameter)
self.frmEdit = self.frmEdit = frmUpdate_Slovar(caller_frmUpdate = self)
for i in rsSlovar:
self.frmEdit.txBesedaID.SetValue(strip(str(i[0])))
self.frmEdit.txKoroska.SetValue(strip(str(i[1])))
self.frmEdit.txSlovenska.SetValue(strip(str(i[2])))
sSlovar =(strip(str(i[1])))
sTitle = 'Izberi besedo: %s' % (sSlovar)
self.frmEdit.SetTitle(sTitle)
self.frmEdit.Show()
self.frmEdit.Center()
except:
sModule = 'Module: slovar.py'
sFunction ='Function: OnOpenEdit'
sParameter ='Input parameter: %s ' %(sSQL,sParameter)
excValue = 'Exception value:%s ' %(str(sys.exc_value))
excType = 'Exception type:%s ' %(str(sys.exc_type))
logTime = time.localtime(time.time())
FormatlogTime = time.strftime("%d/%m/%Y %H:%M:%S", logTime)
sFormatLog = ("Data: %s" % (FormatlogTime))
fLog = open('log.txt','a')
sReportException=(sFormatLog,sModule,sFunction,sParameter,excValue,excType)
fLog.write(sReportException)
fLog.close()
wx.MessageBox("Pozor!\n%s\n%s\n%s\n%s\n%s\n%s" % (sModule,
sFunction,
sParameter,
sFormatLog,
excValue
,excType), AppTitle, wx.OK|wx.ICON_ERROR)
def OnUpperCaseText(self, event):
wdgControl = event.GetEventObject()
retValue = wdgControl.GetValue()
upValue = retValue.upper()
if retValue <> upValue:
wdgControl.SetValue(upValue)
wdgControl.SetInsertionPointEnd()
event.Skip()
def OnItemSelected(self, event):
global iSlovar
item = event.GetItem()
iSlovar =item.GetText()
self.myStatusBar.SetStatusText("Izberi besedo = %s " %(iSlovar),1)
def OnExit(self,event):
#Ask for exit
intChoice = OnClose()
if intChoice == 2:
self.Destroy()
def OnTimer(self, evt):
t = time.localtime(time.time())
sbTime = time.strftime("Astral date %d/%m/%Y are %H:%M:%S", t)
self.myStatusBar.SetStatusText(sbTime,0)
def OnLoadData(self):
global iCount
try:
strSQL='SELECT * FROM Slovar'
rsRecordset = data.OnQuery(strSQL)
return rsRecordset
except:
sModule = 'Module: slovar.py'
sFunction ='Function: OnLoadData'
sParameter ='Input parameter: Nothing'
excValue = 'Exception value:%s ' %(str(sys.exc_value))
excType = 'Exception type:%s ' %(str(sys.exc_type))
logTime = time.localtime(time.time())
FormatlogTime = time.strftime("%d/%m/%Y %H:%M:%S", logTime)
sFormatLog = ("Data: %s" % (FormatlogTime))
fLog = open('log.txt','a')
sReportException=(sFormatLog,sModule,sFunction,sParameter,excValue,excType)
fLog.write(sReportException)
fLog.close()
wx.MessageBox("Pozor!\n%s\n%s\n%s\n%s\n%s\n%s" % (sModule,
sFunction,
sParameter,
sFormatLog,
excValue
,excType),AppTitle, wx.OK|wx.ICON_ERROR)
def OnClose():
try:
ret=wx.MessageBox('Želiš zapreti slovar?', AppTitle, wx.YES_NO |wx.ICON_QUESTION| wx.CENTRE |wx.NO_DEFAULT)
return ret
except:
sModule = 'Module: slovar.py'
sFunction ='Function: OnClose'
sParameter ='Input parameter: Nothing'
excValue = 'Exception value:%s ' %(str(sys.exc_value))
excType = 'Exception type:%s ' %(str(sys.exc_type))
logTime = time.localtime(time.time())
FormatlogTime = time.strftime("%d/%m/%Y %H:%M:%S", logTime)
sFormatLog = ("Data: %s" % (FormatlogTime))
fLog = open('log.txt','a')
sReportException=(sFormatLog,sModule,sFunction,sParameter,excValue,excType)
fLog.write(sReportException)
fLog.close()
wx.MessageBox("Attention!\n%s\n%s\n%s\n%s\n%s\n%s" % (sModule,
sFunction,
sParameter,
sFormatLog,
excValue
,excType),AppTitle, wx.OK|wx.ICON_ERROR)
if __name__=='__main__':
MyApp = wx.PySimpleApp(redirect=True)
frame = frmSlovar()
frame.Show(True)
frame.Center()
MyApp.MainLoop()
Zna kdo to preoblikovat v TKINTER?
Valex86 ::
kakšen nasvet kak spremenit, ker namreč tkitera ne poznam morem pa met nalogo s tkinterom znala sem samo rešit z wx-om.
Valex86 ::
from Tkinter import *
class App:
def __init__(self,parent):
f =Frame(parent)
f.pack(padx=15,pady=15)
Label(f,text='Vpisi besedo:').pack(side=TOP,padx=10,pady=10)
self.entry = Entry(f,text=" ").pack(side=TOP,padx=10,pady=10)
self.button = Button(f, text="slo-ang",command=self.prevedi)
self.button.pack(side=TOP,padx=10,pady=10)
self.button = Button(f, text="ang -slo",command=self.prevedi1).pack(side=TOP,padx=10,pady=10)
self.exit = Button(f, text="IZHOD", command=f.quit).pack()
def prevedi(self):
print "prevod"
def prevedi1(self):
print "test"
root = Tk()
root.title('SLOVAR')
app = App(root)
root.mainloop()kako naj defibiram gumb, da ko uporabnik zapiše slo besedo da jo prevede v ang in obratno
Vredno ogleda ...
| Tema | Ogledi | Zadnje sporočilo | |
|---|---|---|---|
| Tema | Ogledi | Zadnje sporočilo | |
| » | python-rabim pomočOddelek: Programiranje | 2969 (1199) | rnla1973 |
| » | Python - pomoč (strani: 1 2 3 )Oddelek: Programiranje | 19206 (9954) | black ice |
| » | Predstavitev dvojiškega drevesa z seznamomOddelek: Programiranje | 2148 (1748) | ktka |
| » | Ruby + Glade ... težaveOddelek: Programiranje | 1750 (1543) | sebatronic |
| » | razložitev nekaterij elementov v visual studio 05Oddelek: Programiranje | 2285 (2090) | darkolord |