Difference between revisions of "Python"

From Teknologisk videncenter
Jump to: navigation, search
m (removed Category:Programming using HotCat)
m
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]]

Revision as of 10:34, 3 December 2023


Programming style

  • Recomended indent - 4 spaces
pip install reindent  # Pyhon reindent script
reindent my_script.py

Vim setting for python

add following lines in ~/.vimrc

"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>