Python

From Teknologisk videncenter
Revision as of 16:45, 11 January 2012 by Pasa (talk | contribs) (Created page with "<center>'''Python kodning med Tkinter'''</center> <center>'''(Python GUI creation)'''</center> '''Main file coding (InsertViaTekstbox.py) :''' <source lang="python"> #!/usr/...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Python kodning med Tkinter
(Python GUI creation)


Main file coding (InsertViaTekstbox.py) :


#!/usr/bin/python
# -*- coding: utf-8 -*-
#Mikkel, Hans, Søren, Ib, Åse
from Tkinter import * #Importere alle funktioner fra Tkinter i python
from writefile import * #Importere alle funktioner fra filen writefile

#Function som bruges til at indsætte tekst i listbox samt tekstfil
def Insert():
name = entI.get() #Henter tekst fra Entrybox
Mnames = name.split(', ') #Splitter ved flere navne indsat i Entry box

for item in Mnames: #For hver item
InsertItem(item) #Indsættes tekst i listbox
FileWrite(item, 'a') #Skrives ind i tekstfil
entI.delete(0,END)# Sletter teksten i Entrybox
#Function til sletning af tekst i listbox samt tekstfil</nowiki>
def Remove():
name = entI.get()
if name == 'allnames': #Hvis teksten 'allnames' findes i Entrybox 
FileWrite('','w') #Der skrives til tekst filen i write men intet bliver skrevet i den
entI.delete(0,END) #Entrybox tekst slettes
Antal = listb.size() -1 #Størrelse af listb findes samt -1
listb.delete(0,Antal) #Sletning af listbox tekst fra 0 til Antal
if not name == 'allnames': #Hvis ikke teksten 'allnames' findes i Entrybox
Antal = listb.size() -1
Sammlign = listb.get(0,Antal) #Tager alt fra listbox og sætter i Sammlign
listb.delete(0,Antal)
for item in Sammlign:#For hver item i Sammlign
if not item == name: #Hvis item ikke er lig Entrybox
InsertItem(item) #Indsæt tekst i listbox 
FileWrite('','w') #Sletning af alt i tekst fil
for item in Sammlign:
if not item == name: #Item i sammlign som ikke er lig med tekst fra entrybox 
FileWrite(item, 'a') #Item skrives til Eof
entI.delete(0,END) #Sletning af entrybox tekst
#Funktion til indsættelse af tekst i listbox

def InsertItem(Name):

listb.insert(END,Name);


root = Tk()


#root.geometry('200x210+350+70')</nowiki>
#Root betyder at Button/Entry/Listbox bliver lavet i root vinduet.

toplabel = Label(root, text = 'Test Python GUI') #Laver en lable
entI = Entry(root) #Laver en EntryBox til indsættelse af tekst.
buttonI = Button(root, text = 'Insert', command = Insert) #Laver knap til Insert funktion
buttonR = Button(root, text = 'Remove', command = Remove) #Laver knap til Remove funktion
listb = Listbox(root, bg = 'blue') #Laver Listbox til visning af navne
# try/catch </nowiki>metode til indskrivning af navne i Names.txt

try:

NamesFromFile = FileRead() # Kalder funktion FileRead fra writefile
for names in NamesFromFile: # For hver item i NamesFromFile
names = names.split('\n') # Splitter for hver \n(ny linie)
for item in names: #For hver item
if not item == '':
InsertItem(item)

except:

pass


# Pack søger for at man kan se dem grafiske i vinduet.

toplabel.pack(pady=5,padx=5) #Pady/padx vil 'pad' iforhold til x/y akslen i vinduet.
entI.pack(anchor = W) # Anchor vil binde button/entry/listb i den vest/østlige del af vinduet.

buttonI.pack(anchor = E)

buttonR.pack(anchor = E)

listb.pack()


root.mainloop()

Secondary file (writefile.py):

#!/usr/bin/python


import os

#Funktion bruges til at skrive til fil </nowiki>

#names = tekst som skal skrives i filen</nowiki>

#x = Metoden der bruges til det (appending, write, read)

def FileWrite(names, x): 

FileName = 'Names.txt' #Sætter filnavn

text_file = open(FileName, x+'+b') #Åbner fil samt Laver fil i binær form
text_file.write(names+'\n') #Indsætter tekst i fil.

text_file.close() #Lukker filen

Tkinter tutorial: http://wiki.python.org/moin/Intro%20to%20programming%20with%20Python%20and%20Tkinter

Tkinter funktioner: http://www.scripps.edu/~sanner/python/inputform/tkinterWidgets.html http://tkinter.unpy.net/wiki/Widgets

Python funktioner: http://docs.python.org/library/functions.html