Difference between revisions of "Python"

From Teknologisk videncenter
Jump to: navigation, search
m (removed Category:Programming using HotCat)
m (Vim setting for python)
 
(7 intermediate revisions by the same user 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
 
  
 +
==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.
+
#Content of  ~/.vimrc
 
+
#create file history directory: '''mkdir ~/.vim/undodir'''
toplabel = Label(root, text = 'Test Python GUI') #Laver en lable
+
<source lang=text>
entI = Entry(root) #Laver en EntryBox til indsættelse af tekst.
+
syntax on
buttonI = Button(root, text = 'Insert', command = Insert) #Laver knap til Insert funktion
+
set showmode
buttonR = Button(root, text = 'Remove', command = Remove) #Laver knap til Remove funktion
+
" set noet ci pi sts=0 sw=4 ts=4 - same as the next 6 lines
listb = Listbox(root, bg = 'blue') #Laver Listbox til visning af navne
+
set noexpandtab
# try/catch </nowiki>metode til indskrivning af navne i Names.txt
+
set copyindent
 
+
set preserveindent
try:
+
set softtabstop=0
 
+
set shiftwidth=4
NamesFromFile = FileRead() # Kalder funktion FileRead fra writefile
+
set tabstop=4
for names in NamesFromFile: # For hver item i NamesFromFile
+
set number
names = names.split('\n') # Splitter for hver \n(ny linie)
+
set autoindent
for item in names: #For hver item
+
set smartindent
if not item == '':
+
" Yank and Paste between terminal windows
InsertItem(item)
+
set mouse=v
 
+
set clipboard=unnamed
except:
+
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab
 
+
autocmd FileType tex,latex,python set showmatch
pass
+
"Python Settings
 
+
autocmd FileType python set softtabstop=4
 
+
autocmd FileType python set tabstop=4
# Pack søger for at man kan se dem grafiske i vinduet.
+
autocmd FileType python set autoindent
 
+
autocmd FileType python set expandtab
toplabel.pack(pady=5,padx=5) #Pady/padx vil 'pad' iforhold til x/y akslen i vinduet.
+
autocmd FileType python set textwidth=132
entI.pack(anchor = W) # Anchor vil binde button/entry/listb i den vest/østlige del af vinduet.
+
autocmd FileType python set smartindent
 
+
autocmd FileType python set shiftwidth=4
buttonI.pack(anchor = E)
+
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>
buttonR.pack(anchor = E)
+
if has("autocmd")
 
+
  au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif
listb.pack()
+
endif
 
+
"Undo file history
 
+
set undodir=~/.vim/undodir
root.mainloop()
+
set undofile
 +
set undolevels=1000
 +
set undoreload=10000
 
</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:Python]]
 
[[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