|
|
Line 1: |
Line 1: |
− | '''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
| |
| | | |
| + | ==Programming style== |
| + | *Recomended indent - 4 spaces |
| | | |
− | '''Python kodning med Tkinter'''
| + | <source lang=bash> |
− | '''(Python GUI creation)'''
| + | pip install reindent # Pyhon reindent script |
− | | + | reindent my_script.py |
− | '''Main file coding (InsertViaTekstbox.py) :'''
| + | </source> |
− | | |
− | <source lang="python"> | |
− | #!/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>
| + | ===Vim setting for python=== |
− | #Root betyder at Button/Entry/Listbox bliver lavet i root vinduet.
| + | add following lines in ~/.vimrc |
− | | + | <source lang=bash> |
− | toplabel = Label(root, text = 'Test Python GUI') #Laver en lable
| + | "Python Settings |
− | entI = Entry(root) #Laver en EntryBox til indsættelse af tekst.
| + | autocmd FileType python set softtabstop=4 |
− | buttonI = Button(root, text = 'Insert', command = Insert) #Laver knap til Insert funktion
| + | autocmd FileType python set tabstop=4 |
− | buttonR = Button(root, text = 'Remove', command = Remove) #Laver knap til Remove funktion
| + | autocmd FileType python set autoindent |
− | listb = Listbox(root, bg = 'blue') #Laver Listbox til visning af navne
| + | autocmd FileType python set expandtab |
− | # try/catch </nowiki>metode til indskrivning af navne i Names.txt
| + | autocmd FileType python set textwidth=80 |
− | | + | autocmd FileType python set smartindent |
− | try:
| + | autocmd FileType python set shiftwidth=4 |
− | | + | autocmd FileType python map <buffer> <F2> :w<CR>:exec '! python' shellescape(@%, 1)<CR> |
− | NamesFromFile = FileRead() # Kalder funktion FileRead fra writefile
| + | autocmd FileType python imap <buffer> <F2> <esc>:w<CR>:exec '! python' shellescape(@%, 1)<CR> |
− | 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()
| |
| </source> | | </source> |
| | | |
− | == Secondary file (writefile.py): ==
| |
− |
| |
− |
| |
− | <source lang="python">
| |
− | #!/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
| |
− | </source>
| |
| | | |
| [[Category:Python]] | | [[Category:Python]] |
pip install reindent # Pyhon reindent script
reindent my_script.py
"Python Settings
autocmd FileType python set softtabstop=4
autocmd FileType python set tabstop=4
autocmd FileType python set autoindent
autocmd FileType python set expandtab
autocmd FileType python set textwidth=80
autocmd FileType python set smartindent
autocmd FileType python set shiftwidth=4
autocmd FileType python map <buffer> <F2> :w<CR>:exec '! python' shellescape(@%, 1)<CR>
autocmd FileType python imap <buffer> <F2> <esc>:w<CR>:exec '! python' shellescape(@%, 1)<CR>