Difference between revisions of "Python"

From Teknologisk videncenter
Jump to: navigation, search
m (Vim setting for python)
 
(11 intermediate revisions by 2 users not shown)
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
 
  
<center>'''Python kodning med Tkinter'''</center>
+
==Programming style==
 +
*Recomended indent - 4 spaces
  
<center>'''(Python GUI creation)'''</center>
+
<source lang=bash>
 
+
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
+
===Vim setting for python===
InsertItem(item) #Indsættes tekst i listbox
+
#Content of  ~/.vimrc
FileWrite(item, 'a') #Skrives ind i tekstfil
+
#create file history directory: '''mkdir ~/.vim/undodir'''
entI.delete(0,END)# Sletter teksten i Entrybox
+
<source lang=text>
#Function til sletning af tekst i listbox samt tekstfil</nowiki>
+
syntax on
def Remove():
+
set showmode
name = entI.get()
+
" set noet ci pi sts=0 sw=4 ts=4 - same as the next 6 lines
if name == 'allnames': #Hvis teksten 'allnames' findes i Entrybox
+
set noexpandtab
FileWrite('','w') #Der skrives til tekst filen i write men intet bliver skrevet i den
+
set copyindent
entI.delete(0,END) #Entrybox tekst slettes
+
set preserveindent
Antal = listb.size() -1 #Størrelse af listb findes samt -1
+
set softtabstop=0
listb.delete(0,Antal) #Sletning af listbox tekst fra 0 til Antal
+
set shiftwidth=4
if not name == 'allnames': #Hvis ikke teksten 'allnames' findes i Entrybox
+
set tabstop=4
Antal = listb.size() -1
+
set number
Sammlign = listb.get(0,Antal) #Tager alt fra listbox og sætter i Sammlign
+
set autoindent
listb.delete(0,Antal)
+
set smartindent
for item in Sammlign:#For hver item i Sammlign
+
" Yank and Paste between terminal windows
if not item == name: #Hvis item ikke er lig Entrybox
+
set mouse=v
InsertItem(item) #Indsæt tekst i listbox
+
set clipboard=unnamed
FileWrite('','w') #Sletning af alt i tekst fil
+
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab
for item in Sammlign:
+
autocmd FileType tex,latex,python set showmatch
if not item == name: #Item i sammlign som ikke er lig med tekst fra entrybox
+
"Python Settings
FileWrite(item, 'a') #Item skrives til Eof
+
autocmd FileType python set softtabstop=4
entI.delete(0,END) #Sletning af entrybox tekst
+
autocmd FileType python set tabstop=4
#Funktion til indsættelse af tekst i listbox
+
autocmd FileType python set autoindent
 
+
autocmd FileType python set expandtab
def InsertItem(Name):
+
autocmd FileType python set textwidth=132
 
+
autocmd FileType python set smartindent
listb.insert(END,Name);
+
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>
root = Tk()
+
if has("autocmd")
 
+
  au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif
 
+
endif
#root.geometry('200x210+350+70')</nowiki>
+
"Undo file history
#Root betyder at Button/Entry/Listbox bliver lavet i root vinduet.
+
set undodir=~/.vim/undodir
 
+
set undofile
toplabel = Label(root, text = 'Test Python GUI') #Laver en lable
+
set undolevels=1000
entI = Entry(root) #Laver en EntryBox til indsættelse af tekst.
+
set undoreload=10000
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()
 
 
</source>
 
</source>
  
== Secondary file (writefile.py): ==
+
==Links==
 
+
*[https://www.python4data.science/en/latest/index.html Python for data science]
 
 
<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:Programming]]
+
[[Category:Python]]

Latest revision as of 07:51, 15 May 2024


Programming style

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

Vim setting for python

  1. Content of ~/.vimrc
  2. create file history directory: mkdir ~/.vim/undodir
syntax on
set showmode
" set noet ci pi sts=0 sw=4 ts=4 - same as the next 6 lines
set noexpandtab
set copyindent
set preserveindent
set softtabstop=0
set shiftwidth=4
set tabstop=4
set number
set autoindent
set smartindent
" Yank and Paste between terminal windows
set mouse=v
set clipboard=unnamed
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab
autocmd FileType tex,latex,python set showmatch
"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=132
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>
if has("autocmd")
  au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif
endif
"Undo file history
set undodir=~/.vim/undodir
set undofile
set undolevels=1000
set undoreload=10000

Links