#!usr/bin/env python
from Tkinter import *
import sqlite3
#Witten by Steve Atchison 11/16/2013
def cleargui():
recdate.delete(0,END)
bookpage.delete(0,END)
pin.delete(0,END)
qref.delete(0,END)
problemnotes.delete(0,END)
textwindow.delete("1.0",END)
def connectdb():
connect = sqlite3.connect("ProblemParcels.db")
cur = connect.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS problemtable(recorddate text, deednumber text,pin text, quickref text, notes text)")
def addtodatabase():
connectdb()
#Get the data from the GUI
record_date=recdate.get()
deednum=bookpage.get()
parcelnum=pin.get()
quick_ref=qref.get()
deed_notes=problemnotes.get()
#add data to the data base
connect = sqlite3.connect("ProblemParcels.db")
cur=connect.cursor()
cur.execute("INSERT INTO problemtable VALUES(?,?,?,?,?)",([record_date,deednum,parcelnum,quick_ref,deed_notes]))
connect.commit()
cleargui()
getdata()
def getdata():#Display data in test window
cleargui()
addtoTextwin()
connect = sqlite3.connect("ProblemParcels.db")
cur=connect.cursor()
thedata = cur.execute("SELECT * FROM problemtable")
for row in thedata:
textwindow.insert("100.0",row[0]+" - "+row[1]+" - "+row[2]+" - "+row[3]+" - "+row[4]+"\n")
addlines()
def deleterow():#Delete a row from database using quick ref
deleterow=qref.get()
connect = sqlite3.connect("ProblemParcels.db")
cur=connect.cursor()
cur.execute("DELETE FROM problemtable WHERE quickref = ?",([deleterow]))
connect.commit()
cleargui()
getdata()
def findqref():#Find data using quick ref
findquickref=qref.get()
connect = sqlite3.connect("ProblemParcels.db")
cur=connect.cursor()
therow=cur.execute("SELECT * FROM problemtable WHERE quickref = ?",([findquickref]))
addtoTextwin()
for row in therow:
textwindow.insert("100.0",row[0]+" - "+row[1]+" - "+row[2]+" - "+row[3]+" - "+row[4]+"\n")
def addtoTextwin():
textwindow.insert("100.0","REC DATE DEED PIN QUICK REF NOTES \n\n")
def addlines():
textwindow.insert("100.0","------------------------------------------------------------------------------------------------------\n")
root=Tk()
root.title("Problem Parcels")
root.config(bg='lightblue')
#create frames
frame1=Frame(root)
frame1.pack()
frame2=Frame(root)
frame2.pack()
frame3=Frame(root)
frame3.pack()
frame4=Frame(root)
frame4.pack()
frame5=Frame(root)
frame5.pack()
recordlabel=Label(frame1,text="Recorded date:")
recordlabel.pack(side=LEFT)
recdate=Entry(frame1,width=10,text="Record date:")
recdate.pack(side=LEFT,padx=5,pady=2)
bookpagelabel=Label(frame1,text='Deed number:')
bookpagelabel.pack(side=LEFT,padx=5,pady=2)
bookpage=Entry(frame1,width=10,text="Deed Number:")
bookpage.pack(side=LEFT,padx=5,pady=2)
pinlabel=Label(frame1,text='Parcel number:')
pinlabel.pack(side=LEFT,padx=5,pady=2)
pin=Entry(frame1,text="Parcel number:")
pin.pack(side=LEFT,padx=5,pady=2)
qreflabel=Label(frame1,text='Quick Ref:')
qreflabel.pack(side=LEFT,padx=5,pady=2)
qref=Entry(frame1,text="Quick Ref:")
qref.pack(side=LEFT,padx=5,pady=2)
problemlabel=Label(frame3,text="Problem Notes:")
problemlabel.pack(side=LEFT,padx=5,pady=2)
problemnotes=Entry(frame3,text="Problem notes",width='100')
problemnotes.pack(side=LEFT,padx=5,pady=2)
textwindow=Text(root,width='140',height=35,background='white')
textwindow.pack()
aframe=Frame(root)
aframe.pack()
btn=Button(aframe,text='Add to Database ',command=addtodatabase)
btn.pack(padx=5,pady=5,side='left')
btn2=Button(aframe,text="LIST DATA",command=getdata)
btn2.pack(padx=5,pady=5,side='left')
btn3=Button(aframe,text="Clear window",command=cleargui)
btn3.pack(padx=5,pady=5,side='left')
btn4=Button(aframe,text='Delete line',command=deleterow)
btn4.pack(padx=5,pady=5,side='left')
findbtn=Button(aframe,text='Find using Quick ref',command=findqref)
findbtn.pack(padx=5,pady=5,side='left')
root.mainloop()
This is a personal record of my python programming experiences. It will allow me to see how I am progressing as I learn a new language.
Saturday, June 13, 2015
Wednesday, March 25, 2015
GUI web scrape program.
#Appraiser Data scraper example.
#Written by Steve Atchison for Shawnee County March 17 2015
import urllib2
from Tkinter import *
def getwebhtml():
#This gets the html text from the appraiser webpage using the parcel number entered by user: assines it to the_page
pid = pinnum.get()
req = urllib2.Request('http://www.snco.us/ap/R_prop/Comp.asp?PRCL_ID='+str(pid)+'&PRCL_CD=01&YEAR=2015')
response = urllib2.urlopen(req)
the_page = response.read()
startchar = the_page.find('PID1=')
#compareable pin
comp1=(the_page[int(startchar):int(startchar)+21])
#saleprice
saleprice=(the_page[int(startchar+88):int(startchar)+99])
#sale date
saledate=(the_page[int(startchar+63):int(startchar)+67])
txtbox.insert("1.0",comp1+'\n')
txtbox.insert("2.0",'Date: '+saledate+'\n')
txtbox.insert("3.0",'Sale price:'+saleprice+'\n\n')
startchar = the_page.find('PID2=')
#compareable pin
comp1=(the_page[int(startchar):int(startchar)+21])
#saleprice
saleprice=(the_page[int(startchar+88):int(startchar)+99])
#sale date
saledate=(the_page[int(startchar+63):int(startchar)+67])
txtbox.insert("1.0",comp1+'\n')
txtbox.insert("2.0",'Date: '+saledate+'\n')
txtbox.insert("3.0",'Sale price:'+saleprice+'\n\n')
startchar = the_page.find('PID3=')
#compareable pin
comp1=(the_page[int(startchar):int(startchar)+21])
#saleprice
saleprice=(the_page[int(startchar+88):int(startchar)+99])
#sale date
saledate=(the_page[int(startchar+63):int(startchar)+67])
txtbox.insert("1.0",comp1+'\n')
txtbox.insert("2.0",'Date: '+saledate+'\n')
txtbox.insert("3.0",'Sale price:'+saleprice+'\n\n')
startchar = the_page.find('PID4=')
#compareable pin
comp1=(the_page[int(startchar):int(startchar)+21])
#saleprice
saleprice=(the_page[int(startchar+88):int(startchar)+99])
#sale date
saledate=(the_page[int(startchar+63):int(startchar)+67])
txtbox.insert("1.0",comp1+'\n')
txtbox.insert("2.0",'Date: '+saledate+'\n')
txtbox.insert("3.0",'Sale price:'+saleprice+'\n\n')
startchar = the_page.find('PID5=')
#compareable pin
comp1=(the_page[int(startchar):int(startchar)+21])
#saleprice
saleprice=(the_page[int(startchar+88):int(startchar)+99])
#sale date
saledate=(the_page[int(startchar+63):int(startchar)+67])
txtbox.insert("1.0",comp1+'\n')
txtbox.insert("2.0",'Date: '+saledate+'\n')
txtbox.insert("3.0",'Sale price:'+saleprice+'\n\n')
theweb()#opens up webpages for all properties.
def cleartext():
txtbox.delete("1.0", END)
pinnum.delete(0,END)
def theweb():
for row in arcpy.SearchCursor("Owners"):
parcelnumber= row.PID
print(parcelnumber)
webbrowser.open('http://www.snco.us/Ap/R_prop/Listing.asp?PRCL_ID='+str(parcelnumber))
open
root = Tk()
btn = Button(root, text = "Get Comparables", command = getwebhtml)
btn.pack()
btn2=Button(root, text="Clear", command=cleartext)
btn2.pack()
pinnum=Entry(root)
pinnum.pack()
txtbox = Text(root)
txtbox.pack()
root.mainloop()
Snapshot of the Simple Scrape Program
This is a snap shot of my simple scrape python program.
#!/usr/bin/python
#Appraiser Data scraper
#Written by Steve Atchison for Shawnee County March 17 2015
import urllib2
pid = raw_input('Enter parcel number: ')
#This gets the html text from the appraiser webpage using the parcel number entered by user.
req = urllib2.Request('http://www.snco.us/ap/R_prop/Comp.asp?PRCL_ID='+str(pid)+'&PRCL_CD=01&YEAR=2015')
response = urllib2.urlopen(req)
the_page = response.read()
#erase all data in scrape_data.txt file
f2=open("scrape_data.txt",'w')
f2.close()
def getmoredata(start):
#This function grabs sales and date from appraiser webpage and saves it to scrape_data.txt
print('--------------------------------')
#Compare PIN
thepin=((the_page[int(start+5):int(start)+21]))
print(thepin)
#Actual sale price
saleprice=(the_page[int(start+88):int(start)+99])
print('Actual sales price = %s') % saleprice
#sale date
saledate=(the_page[int(start+63):int(start)+67])
print('Sale date = %s') % saledate
f2=open("scrape_data.txt",'a')
f2.write(thepin +' ')
f2.write(saleprice +' ')
f2.write(saledate + '\n')
f2.close()
#Finds the begining point of each parcel number in the html file,
#and then calls the getmoredata function
startchar = the_page.find('PID1=')
getmoredata(startchar)
startchar = the_page.find('PID2=')
getmoredata(startchar)
startchar = the_page.find('PID3=')
getmoredata(startchar)
startchar = the_page.find('PID4=')
getmoredata(startchar)
startchar = the_page.find('PID5=')
getmoredata(startchar)
Thursday, February 5, 2015
I improved on my letter writing program!
#Written by Steve Atchison 6/5/2013 for Shawnee County
import datetime
from Tkinter import *
def cleargui():
ent1.delete(0,END)
deednum.delete(0,END)
textwin.delete("1.0",END)
textwin.insert("0.1","Please close GUI to create letter.")
#GET DATA FROM GUI
def getdatafromgui():
notes = textwin.get('1.0',END)#GET TEXT FROM THE TEXT WINDOW
print("\n")
#SELECT A PARCEL FROM THE OWNER LAYER FIRST BEFORE USING THIS SCRIPT.
for row in arcpy.SearchCursor("Owners"):
grantor= ent1.get()
owner = row.getValue('ONAME')
mailaddress = row.getValue('MAILADDRESS')
mailaddress2 = row.getValue('MAILADDRESS2')
#deed= row.getValue('DBOOKPAGE')
deed=deednum.get()
today=datetime.date.today()
parcelid=row.getValue('PID')
#THIS IS WHERE THE SAVE LETTER TO FILE STARTS.
f = open(r"G:\GIS and Mapping\TitleLetters\theletter.txt",'w')
getdatafromgui() #Gets data from the GUI
f.write('''
Shawnee County Appraiser/GIS Department
1515 NW Saline, Suite 100
Topeka KS 66618
'''+"\n")
f.write(" "+today.strftime("%m/%d/%y"+"\n")+"\n"+"\n"+"\n")
f.write(" "+str(owner)+"\n")
f.write(" "+str(mailaddress)+"\n")
f.write(" "+str(mailaddress2)+ "\n"+"\n"+"\n")
f.write(' '+'Dear '+ str(owner)+'\n')
f.write('''
Recently we processed a recorded deed %s that was filed with the Shawnee County
Register of Deeds Office. You are being sent this letter to acknowledge what properties
were affected and what the actions the GIS (Geographic Information Systems) department
did according to that filed deed.
Please note below are the actions the GIS Department used in processing %s
Name NOT Changed from %s to %s
%s : %s
Respectfully,
Shawnee County Mapping Department/Appraisers (785)251-6049 ''' %(deed,deed,owner,grantor,parcelid,notes))
#f.write("\n"+"-------------------------------------------------------------------------------------------------"+"\n")
cleargui()
root = Tk()
root.config(bg='blue')
root.geometry('700x400')
btn1=Button(root,text='Add to letter',command = write_letter)
btn1.pack()
lbl=Label(root,text="GRANTEE").pack()
ent1 = Entry(root, width =80)
ent1.pack()
lbl2=Label(root,text="Deed number ")
lbl2.pack()
deednum=Entry(root)
deednum.pack()
lbl2=Label(root,text="Actions taken").pack()
textwin=Text(root,width=800,height=26,background='white')
textwin.pack(padx=5,pady=5)
root.mainloop()
#Select a parcel from the owner layer before running this script.
#A layer named "Owner" needs to be present in the table of contents
#Letter will be created when GUI is closed: Copy and paste into Word.
import datetime
from Tkinter import *
def cleargui():
ent1.delete(0,END)
deednum.delete(0,END)
textwin.delete("1.0",END)
textwin.insert("0.1","Please close GUI to create letter.")
#GET DATA FROM GUI
def getdatafromgui():
notes = textwin.get('1.0',END)#GET TEXT FROM THE TEXT WINDOW
print("\n")
#SELECT A PARCEL FROM THE OWNER LAYER FIRST BEFORE USING THIS SCRIPT.
for row in arcpy.SearchCursor("Owners"):
grantor= ent1.get()
owner = row.getValue('ONAME')
mailaddress = row.getValue('MAILADDRESS')
mailaddress2 = row.getValue('MAILADDRESS2')
#deed= row.getValue('DBOOKPAGE')
deed=deednum.get()
today=datetime.date.today()
parcelid=row.getValue('PID')
#THIS IS WHERE THE SAVE LETTER TO FILE STARTS.
f = open(r"G:\GIS and Mapping\TitleLetters\theletter.txt",'w')
getdatafromgui() #Gets data from the GUI
f.write('''
Shawnee County Appraiser/GIS Department
1515 NW Saline, Suite 100
Topeka KS 66618
'''+"\n")
f.write(" "+today.strftime("%m/%d/%y"+"\n")+"\n"+"\n"+"\n")
f.write(" "+str(owner)+"\n")
f.write(" "+str(mailaddress)+"\n")
f.write(" "+str(mailaddress2)+ "\n"+"\n"+"\n")
f.write(' '+'Dear '+ str(owner)+'\n')
f.write('''
Recently we processed a recorded deed %s that was filed with the Shawnee County
Register of Deeds Office. You are being sent this letter to acknowledge what properties
were affected and what the actions the GIS (Geographic Information Systems) department
did according to that filed deed.
Please note below are the actions the GIS Department used in processing %s
Name NOT Changed from %s to %s
%s : %s
Respectfully,
Shawnee County Mapping Department/Appraisers (785)251-6049 ''' %(deed,deed,owner,grantor,parcelid,notes))
#f.write("\n"+"-------------------------------------------------------------------------------------------------"+"\n")
cleargui()
root = Tk()
root.config(bg='blue')
root.geometry('700x400')
btn1=Button(root,text='Add to letter',command = write_letter)
btn1.pack()
lbl=Label(root,text="GRANTEE").pack()
ent1 = Entry(root, width =80)
ent1.pack()
lbl2=Label(root,text="Deed number ")
lbl2.pack()
deednum=Entry(root)
deednum.pack()
lbl2=Label(root,text="Actions taken").pack()
textwin=Text(root,width=800,height=26,background='white')
textwin.pack(padx=5,pady=5)
root.mainloop()
#Select a parcel from the owner layer before running this script.
#A layer named "Owner" needs to be present in the table of contents
#Letter will be created when GUI is closed: Copy and paste into Word.
Tuesday, July 29, 2014
PYTHON CLIENT SERVER PROGRAMS
#This is the Client
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("localhost",8001))
s.send("Ping")
result=s.recv(256)
print result
s.close()
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("localhost",8001))
s.send("Ping")
result=s.recv(256)
print result
s.close()
#This is a python Server program
#!/usr/bin/env python
import socket
server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.bind(("localhost",8001))
server.listen(3)
while True:
(client,address)=server.accept()
msg=client.recv(100)
print "received", msg
client.send("pong")
Tuesday, July 22, 2014
Thursday, July 17, 2014
MY DEED ORGANIZER PROGRAM
#Written by Steve Atchison for shawnee County March 26 2014
#I use this program alot to help me Organize owners on Deeds.
import sqlite3
from Tkinter import *
def addData():
conn=sqlite3.connect('deedinfo.db')
cur=conn.cursor()
cur.execute("create table if not exists deedsort(bkpage text,grantor text,grantee text,pin text)")
#Get data from GUI
bookpage=(thebookpage.get())
seller=(theseller.get())
buyer=(thegrantee.get())
pin=(thepin.get())
clearGUI()
#Inserts data into table. Make sure and use a list to insert values! very important!
cur.execute("insert into deedsort values (?,?,?,?)",([bookpage,seller,buyer,pin]))
conn.commit() #Saves the data
def listData():
clearGUI()
conn=sqlite3.connect('deedinfo.db')
cur=conn.cursor()
myrows=cur.execute("select * from deedsort")
for row in myrows:
txtwin.insert("50.0", row[0]+"\n"+"GRANTOR: "+row[1]+"\n"+"GRANTEE: "+row[2]+"\n"+"pin = "+row[3]+"\n-------------------------------------------------\n")
def finddeed():
con=sqlite3.connect("deedinfo.db")
cur=con.cursor()
deedbookpage = thebookpage.get()
clearGUI()
cur.execute("select * from deedsort")
rows = cur.fetchall()
for row in rows:
if row[0]== str(deedbookpage):
print "\nBook and Page: ", row[0]
print "Grantor: ",row[1]
print "Grantee: ",row[2]
def clearGUI():
thebookpage.delete(0,END)
theseller.delete(0,END)
thegrantee.delete(0,END)
thepin.delete(0,END)
txtwin.delete("1.0",END)
def listgrantor():
clearGUI()
conn=sqlite3.connect('deedinfo.db')
cur=conn.cursor()
myrows=cur.execute("select * from deedsort")
for row in myrows:
txtwin.insert("50.0","GRANTOR :"+ row[1]+"\n-----------------------------------------------------------\n")
def listgrantee():
clearGUI()
conn=sqlite3.connect('deedinfo.db')
cur=conn.cursor()
myrows=cur.execute("select * from deedsort")
for row in myrows:
txtwin.insert("50.0","GRANTEE :"+ row[2]+"\n-----------------------------------------------------------\n")
def droptable():
conn=sqlite3.connect('deedinfo.db')
cur=conn.cursor()
cur.execute("DROP TABLE deedsort")
def saveit():
alist = txtwin.get("1.0",END)
f = open("minilog.txt", "w")
clearGUI()
txtwin.insert("1.0","list saved in minlog.txt")
f.write(str(alist))
f.close()
root=Tk()
root.title('Deed organizer ')
root.config(bg='yellow')
root.geometry('800x750')
btn=Button(root,text="List table",command=listData)
btn.pack()
btn2=Button(root,text="Add to table",command=addData)
btn2.pack()
btn4=Button(root,text="List Grantors",command=listgrantor)
btn4.pack()
grantbtn=Button(root,text="List Grantees",command=listgrantee)
grantbtn.pack()
labl=Label(root,text="DEED NUMBER").pack()
thebookpage = Entry()
thebookpage.pack()
labl2=Label(root,text="GRANTOR").pack()
theseller = Entry(root, width = 90)
theseller.pack()
labl3=Label(root,text="GRANTEE").pack()
thegrantee=Entry(root, width=90)
thegrantee.pack()
lab4=Label(root,text="PIN").pack()
thepin =Entry(root,width =40)
thepin.pack()
txtwin=Text(root,width='800',height=26,background='white')
txtwin.pack(padx=5, pady=5)
droptablebtn=Button(root,text="Delete Table",command=droptable)
droptablebtn.pack()
savebtn=Button(root,text="Save to text file",command=saveit)
savebtn.pack()
root.mainloop()
#I use this program alot to help me Organize owners on Deeds.
import sqlite3
from Tkinter import *
def addData():
conn=sqlite3.connect('deedinfo.db')
cur=conn.cursor()
cur.execute("create table if not exists deedsort(bkpage text,grantor text,grantee text,pin text)")
#Get data from GUI
bookpage=(thebookpage.get())
seller=(theseller.get())
buyer=(thegrantee.get())
pin=(thepin.get())
clearGUI()
#Inserts data into table. Make sure and use a list to insert values! very important!
cur.execute("insert into deedsort values (?,?,?,?)",([bookpage,seller,buyer,pin]))
conn.commit() #Saves the data
def listData():
clearGUI()
conn=sqlite3.connect('deedinfo.db')
cur=conn.cursor()
myrows=cur.execute("select * from deedsort")
for row in myrows:
txtwin.insert("50.0", row[0]+"\n"+"GRANTOR: "+row[1]+"\n"+"GRANTEE: "+row[2]+"\n"+"pin = "+row[3]+"\n-------------------------------------------------\n")
def finddeed():
con=sqlite3.connect("deedinfo.db")
cur=con.cursor()
deedbookpage = thebookpage.get()
clearGUI()
cur.execute("select * from deedsort")
rows = cur.fetchall()
for row in rows:
if row[0]== str(deedbookpage):
print "\nBook and Page: ", row[0]
print "Grantor: ",row[1]
print "Grantee: ",row[2]
def clearGUI():
thebookpage.delete(0,END)
theseller.delete(0,END)
thegrantee.delete(0,END)
thepin.delete(0,END)
txtwin.delete("1.0",END)
def listgrantor():
clearGUI()
conn=sqlite3.connect('deedinfo.db')
cur=conn.cursor()
myrows=cur.execute("select * from deedsort")
for row in myrows:
txtwin.insert("50.0","GRANTOR :"+ row[1]+"\n-----------------------------------------------------------\n")
def listgrantee():
clearGUI()
conn=sqlite3.connect('deedinfo.db')
cur=conn.cursor()
myrows=cur.execute("select * from deedsort")
for row in myrows:
txtwin.insert("50.0","GRANTEE :"+ row[2]+"\n-----------------------------------------------------------\n")
def droptable():
conn=sqlite3.connect('deedinfo.db')
cur=conn.cursor()
cur.execute("DROP TABLE deedsort")
def saveit():
alist = txtwin.get("1.0",END)
f = open("minilog.txt", "w")
clearGUI()
txtwin.insert("1.0","list saved in minlog.txt")
f.write(str(alist))
f.close()
root=Tk()
root.title('Deed organizer ')
root.config(bg='yellow')
root.geometry('800x750')
btn=Button(root,text="List table",command=listData)
btn.pack()
btn2=Button(root,text="Add to table",command=addData)
btn2.pack()
btn4=Button(root,text="List Grantors",command=listgrantor)
btn4.pack()
grantbtn=Button(root,text="List Grantees",command=listgrantee)
grantbtn.pack()
labl=Label(root,text="DEED NUMBER").pack()
thebookpage = Entry()
thebookpage.pack()
labl2=Label(root,text="GRANTOR").pack()
theseller = Entry(root, width = 90)
theseller.pack()
labl3=Label(root,text="GRANTEE").pack()
thegrantee=Entry(root, width=90)
thegrantee.pack()
lab4=Label(root,text="PIN").pack()
thepin =Entry(root,width =40)
thepin.pack()
txtwin=Text(root,width='800',height=26,background='white')
txtwin.pack(padx=5, pady=5)
droptablebtn=Button(root,text="Delete Table",command=droptable)
droptablebtn.pack()
savebtn=Button(root,text="Save to text file",command=saveit)
savebtn.pack()
root.mainloop()
Friday, May 30, 2014
Extract Data from an sqlite3 database.
#Use this program to get the data from parceldata.db
import sqlite3
conn=sqlite3.connect("parceldata.db")
cur=conn.cursor()
myrows=cur.execute("select * from parcel_table")
for row in myrows:
print('------------------------------------------\n')
print row[0]
print row[1]
print("PIN: ")+ row[2]
print("Quick ref: ")+ str(row[3])
print("Calc acres: ")+ str(row[4])
print("\n\n ")
raw_input("press return to close this window")
import sqlite3
conn=sqlite3.connect("parceldata.db")
cur=conn.cursor()
myrows=cur.execute("select * from parcel_table")
for row in myrows:
print('------------------------------------------\n')
print row[0]
print row[1]
print("PIN: ")+ row[2]
print("Quick ref: ")+ str(row[3])
print("Calc acres: ")+ str(row[4])
print("\n\n ")
raw_input("press return to close this window")
Friday, April 25, 2014
A simple function to find the unknown side.
#WRITTEN BY STEVE ATCHISON FOR SHAWNEE COUNTY APRIL 25TH 2014
def uk(known,acres):
'''
This functon prints the unknown side
when known side and acres are entered.
example: uk(1320,20)
'''
acres_to_sf = float(acres* 43560)
unknownside = float(acres_to_sf / known)
print('Unknown Side = %.2f ft' %unknownside)
def uk(known,acres):
'''
This functon prints the unknown side
when known side and acres are entered.
example: uk(1320,20)
'''
acres_to_sf = float(acres* 43560)
unknownside = float(acres_to_sf / known)
print('Unknown Side = %.2f ft' %unknownside)
Wednesday, March 26, 2014
ANOTHER PROGRAM FOR WORK
from Tkinter import *
import sqlite3
#Witten by Steve Atchison For Shawnee County March 26 2014
def cleargui():
textwindow.delete("1.0",END)
addent.delete(0,END)
def connectdb():
connect = sqlite3.connect("mydata.db")
cur = connect.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS addressdata(address text)")
def addtodatabase():
theadd=addent.get()
connect = sqlite3.connect("mydata.db")
cur=connect.cursor()
cur.execute("INSERT INTO addressdata VALUES(?)",([theadd.upper() + " - DELETED FROM GIS"]))
connect.commit()
getdata()
def getdata():
connect = sqlite3.connect("mydata.db")
cur=connect.cursor()
thedata = cur.execute("SELECT * FROM addressdata")
cleargui()
for row in thedata:
textwindow.insert("100.0",row[0]+"\n")
def findadd():
cleargui()
addr=findentry.get()
connect = sqlite3.connect("mydata.db")
cur=connect.cursor()
thedata = cur.execute("SELECT * FROM addressdata WHERE address = ?",([addr]))
for row in thedata:
textwindow.insert("0.1",row[0])
addent.delete(0,END)
def delrecord():
addr=findentry.get()
connect=sqlite3.connect("mydata.db")
cur=connect.cursor()
cur.execute("DELETE FROM addressdata WHERE address = ?",([addr]))
connect.commit() #will not delete without this!
cleargui()
findentry.delete(0,END)
getdata()
connectdb()#creates a database if none exists.
root=Tk()
root.title("REMOVED ADDRESS POINTS")
root.config(bg='black')
lbl=Label(root,text="ADDRESS TO REMVOE FROM GIS").pack()
menu2=Toplevel(root)
menu2.geometry('200x200')
menu2.config(bg="yellow")
addent=Entry(root,text="ADDRESS TO DELETE")
addent.pack()
textwindow=Text(root,background='white')
textwindow.pack()
btn=Button(root,text='Add to Database ',command=addtodatabase)
btn.pack()
btn2=Button(root,text="Show data",command=getdata)
btn2.pack()
btn3=Button(root,text="Clear window",command=cleargui)
btn3.pack()
findentry=Entry(menu2)
findentry.pack()
btn4=Button(menu2,text="Find Address",command= findadd)
btn4.pack(padx=10,pady=10)
delbutton=Button(menu2,text='DELETE',command=delrecord)
delbutton.pack(padx=10,pady=10)
root.mainloop()
Thursday, January 30, 2014
OLD PROGAM QUIT WORKING, SO I WROTE A NEW AND BETTER ONE.
#written by Steve Atchison for Shawnee County Feb 24 2014
from Tkinter import *
mxd = arcpy.mapping.MapDocument('CURRENT')
def textfunc400():
thepin=ent1.get() #Get parcel number from the GUI
for elm in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"):
if elm.name == "PIN":
elm.text = str(thepin)
layout400()
layer_control()
def layout400():
df = arcpy.mapping.ListDataFrames(mxd)[0]
mxd.activeView = 'Page_Layout'
df = arcpy.mapping.ListDataFrames(mxd)[0]
df.scale = 4800
df.referenceScale = '2400'
refresh()
def textfunc200():
thepin=ent1.get() #Get parcel number from the GUI
for elm in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"):
if elm.name == "PIN":
elm.text = str(thepin)
layout200()
layer_control()
def layout200():
df = arcpy.mapping.ListDataFrames(mxd)[0]
mxd.activeView = 'Page_Layout'
df = arcpy.mapping.ListDataFrames(mxd)[0]
df.scale = 2400
df.referenceScale = '1200'
refresh()
def layout100():
df = arcpy.mapping.ListDataFrames(mxd)[0]
mxd.activeView = 'Page_Layout'
df = arcpy.mapping.ListDataFrames(mxd)[0]
df.scale = 1200
df.referenceScale = '600'
refresh()
def textfunc100():
thepin=ent1.get() #Get parcel number from the GUI
for elm in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"):
if elm.name == "PIN":
elm.text = str(thepin)
layout100()
layer_control()
def textfunc50():
thepin=ent1.get() #Get parcel number from the GUI
for elm in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"):
if elm.name == "PIN":
elm.text = str(thepin)
layout50()
def layout50():
df = arcpy.mapping.ListDataFrames(mxd)[0]
mxd.activeView = 'Page_Layout'
df = arcpy.mapping.ListDataFrames(mxd)[0]
df.scale = 600
df.referenceScale = '600'
refresh()
layer_control()
def layer_control():
lyr=arcpy.mapping.ListLayers(mxd,'Parcel_Point')[0]
lyr.visible=False
lyr=arcpy.mapping.ListLayers(mxd,'Parcel_Poly')[0]
lyr.visible=False
lyr=arcpy.mapping.ListLayers(mxd,'AERIALS_2012')[0]
lyr.visible=False
lyr=arcpy.mapping.ListLayers(mxd,'Owners')[0]
lyr.visible=False
def photoon():
lyr=arcpy.mapping.ListLayers(mxd,'AERIALS_2012')[0]
lyr.visible=True
refresh()
def photooff():
lyr=arcpy.mapping.ListLayers(mxd,'AERIALS_2012')[0]
lyr.visible=False
refresh()
def owneron():
lyr=arcpy.mapping.ListLayers(mxd,'Owners')[0]
lyr.visible=True
refresh()
def refresh():
arcpy.RefreshActiveView()
arcpy.RefreshTOC()
layer_control()
root = Tk()
root.title("Steve's Layout Tool")
root.geometry("250x250")
root.config(bg="purple")
ent1=Entry(root)
ent1.pack()
btn3 = Button(root,text = "Map Title 400", command = textfunc400)
btn3.pack(padx=2,pady=2)
btn = Button(root, text = 'Map Title 200 ',command = textfunc200)
btn.pack(padx=2,pady=2)
btn2 = Button(root,text = "Map Title 100", command= textfunc100)
btn2.pack(padx=2,pady=2)
btn4 = Button(root,text = "Map Title 50", command = textfunc50)
btn4.pack(padx=2,pady=2)
photobtn = Button(root,text = "Photo On", command = photoon)
photobtn.pack(padx=5, pady=5)
photobtn2 = Button(root,text = "Photo Off", command = photooff)
photobtn2.pack(padx=5,pady=5)
ownbtn=Button(root,text = "Show Owners", command = owneron)
ownbtn.pack()
ent1.insert(0,"Map Title")
root.mainloop()
#CLEAR REFERENCE SCALE AFTER USING THIS SCRIPT
#BE SURE AND CLOSE THE GUI OR IT WILL LOCK ARC MAP UP!
from Tkinter import *
mxd = arcpy.mapping.MapDocument('CURRENT')
def textfunc400():
thepin=ent1.get() #Get parcel number from the GUI
for elm in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"):
if elm.name == "PIN":
elm.text = str(thepin)
layout400()
layer_control()
def layout400():
df = arcpy.mapping.ListDataFrames(mxd)[0]
mxd.activeView = 'Page_Layout'
df = arcpy.mapping.ListDataFrames(mxd)[0]
df.scale = 4800
df.referenceScale = '2400'
refresh()
def textfunc200():
thepin=ent1.get() #Get parcel number from the GUI
for elm in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"):
if elm.name == "PIN":
elm.text = str(thepin)
layout200()
layer_control()
def layout200():
df = arcpy.mapping.ListDataFrames(mxd)[0]
mxd.activeView = 'Page_Layout'
df = arcpy.mapping.ListDataFrames(mxd)[0]
df.scale = 2400
df.referenceScale = '1200'
refresh()
def layout100():
df = arcpy.mapping.ListDataFrames(mxd)[0]
mxd.activeView = 'Page_Layout'
df = arcpy.mapping.ListDataFrames(mxd)[0]
df.scale = 1200
df.referenceScale = '600'
refresh()
def textfunc100():
thepin=ent1.get() #Get parcel number from the GUI
for elm in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"):
if elm.name == "PIN":
elm.text = str(thepin)
layout100()
layer_control()
def textfunc50():
thepin=ent1.get() #Get parcel number from the GUI
for elm in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"):
if elm.name == "PIN":
elm.text = str(thepin)
layout50()
def layout50():
df = arcpy.mapping.ListDataFrames(mxd)[0]
mxd.activeView = 'Page_Layout'
df = arcpy.mapping.ListDataFrames(mxd)[0]
df.scale = 600
df.referenceScale = '600'
refresh()
layer_control()
def layer_control():
lyr=arcpy.mapping.ListLayers(mxd,'Parcel_Point')[0]
lyr.visible=False
lyr=arcpy.mapping.ListLayers(mxd,'Parcel_Poly')[0]
lyr.visible=False
lyr=arcpy.mapping.ListLayers(mxd,'AERIALS_2012')[0]
lyr.visible=False
lyr=arcpy.mapping.ListLayers(mxd,'Owners')[0]
lyr.visible=False
def photoon():
lyr=arcpy.mapping.ListLayers(mxd,'AERIALS_2012')[0]
lyr.visible=True
refresh()
def photooff():
lyr=arcpy.mapping.ListLayers(mxd,'AERIALS_2012')[0]
lyr.visible=False
refresh()
def owneron():
lyr=arcpy.mapping.ListLayers(mxd,'Owners')[0]
lyr.visible=True
refresh()
def refresh():
arcpy.RefreshActiveView()
arcpy.RefreshTOC()
layer_control()
root = Tk()
root.title("Steve's Layout Tool")
root.geometry("250x250")
root.config(bg="purple")
ent1=Entry(root)
ent1.pack()
btn3 = Button(root,text = "Map Title 400", command = textfunc400)
btn3.pack(padx=2,pady=2)
btn = Button(root, text = 'Map Title 200 ',command = textfunc200)
btn.pack(padx=2,pady=2)
btn2 = Button(root,text = "Map Title 100", command= textfunc100)
btn2.pack(padx=2,pady=2)
btn4 = Button(root,text = "Map Title 50", command = textfunc50)
btn4.pack(padx=2,pady=2)
photobtn = Button(root,text = "Photo On", command = photoon)
photobtn.pack(padx=5, pady=5)
photobtn2 = Button(root,text = "Photo Off", command = photooff)
photobtn2.pack(padx=5,pady=5)
ownbtn=Button(root,text = "Show Owners", command = owneron)
ownbtn.pack()
ent1.insert(0,"Map Title")
root.mainloop()
#CLEAR REFERENCE SCALE AFTER USING THIS SCRIPT
#BE SURE AND CLOSE THE GUI OR IT WILL LOCK ARC MAP UP!
Sunday, December 29, 2013
New program to help me with phone calls at work.
#!/usr/bin/python
from Tkinter import *
import sqlite3
#Witten by Steve Atchison 12/28/2013
def cleargui():
textwindow.delete("1.0",END)
parnumber.delete(0,END)
def connectdb():
connect = sqlite3.connect("mydata.db")
cur = connect.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS phonedata(parcelnum text, description text)")
def addtodatabase():
parnum=parnumber.get()
description=textwindow.get("1.0",END)
connect = sqlite3.connect("mydata.db")
cur=connect.cursor()
cur.execute("INSERT INTO phonedata VALUES(?,?)",([parnum,description]))
connect.commit()
cleargui()
def getdata():
connect = sqlite3.connect("mydata.db")
cur=connect.cursor()
thedata = cur.execute("SELECT * FROM phonedata")
cleargui()
for row in thedata:
textwindow.insert("100.0","\n"+row[0]+"\n"+row[1]+"\n---------------------------------------------------------")
def findpar():
cleargui()
parnum=findentry.get()
connect = sqlite3.connect("mydata.db")
cur=connect.cursor()
thedata = cur.execute("SELECT * FROM phonedata WHERE parcelnum = ?",([parnum]))
for row in thedata:
textwindow.insert("0.1",row[0]+'\n\n'+row[1])
parnumber.delete(0,END)
def delrecord():
parnum=findentry.get()
connect=sqlite3.connect("mydata.db")
cur=connect.cursor()
cur.execute("DELETE FROM phonedata WHERE parcelnum = ?",([parnum]))
connect.commit() #will not delete without this!
cleargui()
findentry.delete(0,END)
getdata()
connectdb()#creates a database if none exists.
root=Tk()
root.title("PARCEL INFO")
root.config(bg='dark blue')
lbl=Label(root,text="Parcel number").pack()
menu2=Toplevel(root)
menu2.config(bg="red")
parnumber=Entry(root,text="Deed number")
parnumber.pack()
textwindow=Text(root,background='white')
textwindow.pack()
btn=Button(root,text='Add to Database ',command=addtodatabase)
btn.pack()
btn2=Button(root,text="Show data",command=getdata)
btn2.pack()
btn3=Button(root,text="Clear window",command=cleargui)
btn3.pack()
findentry=Entry(menu2)
findentry.pack()
btn4=Button(menu2,text="Find parcel",command= findpar)
btn4.pack(padx=10,pady=10)
delbutton=Button(menu2,text='DELETE',command=delrecord)
delbutton.pack(padx=10,pady=10)
root.mainloop()
Saturday, November 30, 2013
Working on a database program for work, it saves letters.
from Tkinter import *
import sqlite3
#Witten by Steve Atchison 11/19/2013 for SHAWNEE COUNTY
def listletters():
connect =sqlite3.connect("LETTER_data.db")
cur = connect.cursor()
letter = cur.execute("SELECT * FROM letters")
cleargui()
for row in letter:
textwindow.insert("500.0",row[2])
def cleargui():
textwindow.delete("1.0",END)
deed.delete(0,END)
pinnum.delete(0,END)
def connectdb():
connect = sqlite3.connect("LETTER_data.db")
cur = connect.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS letters(quickref text,pin text, letter text)")
def addtodatabase():
quickref=deed.get()
pin=pinnum.get()
letter=textwindow.get("1.0",END)
connect = sqlite3.connect("LETTER_data.db")
cur=connect.cursor()
cur.execute("INSERT INTO letters VALUES(?,?,?)",([quickref,pin,letter]))
connect.commit()
cleargui()
def getdata():
connect = sqlite3.connect("LETTER_data.db")
cur=connect.cursor()
thedata = cur.execute("SELECT * FROM letters")
for row in thedata:
textwindow.insert("500.0",row[0]+"\n"+row[1]+"\n")
def addlettertotext():
f=open('theletter.txt','r')
for line in f:
textwindow.insert("50.0",line)
def findquick():
cleargui()
pinnum=quickent.get()
connect = sqlite3.connect("LETTER_data.db")
cur=connect.cursor()
theletter = cur.execute("SELECT letter FROM letters where pin = (?)",([pinnum]))
for line in theletter:
textwindow.insert("50.0",line)
quickent.delete(0,END)
def listpins():
cleargui()
connect=sqlite3.connect("LETTER_data.db")
cur=connect.cursor()
parcelnum = cur.execute("SELECT pin FROM letters")
for row in parcelnum:
print(row[0])
textwindow.insert("100.0",row[0]+"\n")
connectdb()#creates a database if none exists.
root=Tk()
root.title("LETTER DATABASE")
root.config(bg='green')
root.geometry('900x700')
top=Toplevel(root)
top.geometry("300x200")
top.config(bg="orange")
top.title("Add letter to database form")
top2=Toplevel(root)
top2.geometry("300x100")
top2.config(bg="light blue")
top2.title("List options")
lbl=Label(top,text="Quick Ref Number").pack()
deed=Entry(top)
deed.pack()
lbl2=Label(top,text="Parcel number").pack()
pinnum=Entry(top)
pinnum.pack()
textwindow=Text(root,width='800',height=35,background='white')
textwindow.pack()
add_to_txt=Button(top,text="IMPORT theletter.txt", command=addlettertotext)
add_to_txt.pack()
addtodatabase=Button(top,text='Add letter to Database ',command=addtodatabase)
addtodatabase.pack()
getpidbtn=Button(top2,text="List Letters", command= listletters)
getpidbtn.pack()
btn3=Button(root,text="Clear window",command=cleargui)
btn3.pack()
btn5=Button(root,text="Find using PIN", command=findquick)
btn5.pack()
listpinbtn=Button(top2,text="List PIN numbers",command=listpins)
listpinbtn.pack()
quickent=Entry(root)
quickent.pack()
root.mainloop()
#DON'T FORGET TO ADD THE QUICK REF NUMBER
import sqlite3
#Witten by Steve Atchison 11/19/2013 for SHAWNEE COUNTY
def listletters():
connect =sqlite3.connect("LETTER_data.db")
cur = connect.cursor()
letter = cur.execute("SELECT * FROM letters")
cleargui()
for row in letter:
textwindow.insert("500.0",row[2])
def cleargui():
textwindow.delete("1.0",END)
deed.delete(0,END)
pinnum.delete(0,END)
def connectdb():
connect = sqlite3.connect("LETTER_data.db")
cur = connect.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS letters(quickref text,pin text, letter text)")
def addtodatabase():
quickref=deed.get()
pin=pinnum.get()
letter=textwindow.get("1.0",END)
connect = sqlite3.connect("LETTER_data.db")
cur=connect.cursor()
cur.execute("INSERT INTO letters VALUES(?,?,?)",([quickref,pin,letter]))
connect.commit()
cleargui()
def getdata():
connect = sqlite3.connect("LETTER_data.db")
cur=connect.cursor()
thedata = cur.execute("SELECT * FROM letters")
for row in thedata:
textwindow.insert("500.0",row[0]+"\n"+row[1]+"\n")
def addlettertotext():
f=open('theletter.txt','r')
for line in f:
textwindow.insert("50.0",line)
def findquick():
cleargui()
pinnum=quickent.get()
connect = sqlite3.connect("LETTER_data.db")
cur=connect.cursor()
theletter = cur.execute("SELECT letter FROM letters where pin = (?)",([pinnum]))
for line in theletter:
textwindow.insert("50.0",line)
quickent.delete(0,END)
def listpins():
cleargui()
connect=sqlite3.connect("LETTER_data.db")
cur=connect.cursor()
parcelnum = cur.execute("SELECT pin FROM letters")
for row in parcelnum:
print(row[0])
textwindow.insert("100.0",row[0]+"\n")
connectdb()#creates a database if none exists.
root=Tk()
root.title("LETTER DATABASE")
root.config(bg='green')
root.geometry('900x700')
top=Toplevel(root)
top.geometry("300x200")
top.config(bg="orange")
top.title("Add letter to database form")
top2=Toplevel(root)
top2.geometry("300x100")
top2.config(bg="light blue")
top2.title("List options")
lbl=Label(top,text="Quick Ref Number").pack()
deed=Entry(top)
deed.pack()
lbl2=Label(top,text="Parcel number").pack()
pinnum=Entry(top)
pinnum.pack()
textwindow=Text(root,width='800',height=35,background='white')
textwindow.pack()
add_to_txt=Button(top,text="IMPORT theletter.txt", command=addlettertotext)
add_to_txt.pack()
addtodatabase=Button(top,text='Add letter to Database ',command=addtodatabase)
addtodatabase.pack()
getpidbtn=Button(top2,text="List Letters", command= listletters)
getpidbtn.pack()
btn3=Button(root,text="Clear window",command=cleargui)
btn3.pack()
btn5=Button(root,text="Find using PIN", command=findquick)
btn5.pack()
listpinbtn=Button(top2,text="List PIN numbers",command=listpins)
listpinbtn.pack()
quickent=Entry(root)
quickent.pack()
root.mainloop()
#DON'T FORGET TO ADD THE QUICK REF NUMBER
Saturday, November 16, 2013
MY PROGRAM NOW SAVES TO A DATA BASE
from Tkinter import *
import sqlite3
#Witten by Steve Atchison 11/16/2013
def cleargui():
textwindow.delete("1.0",END)
deed.delete(0,END)
def connectdb():
connect = sqlite3.connect("mydata.db")
cur = connect.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS mytable(bookpage text, description text)")
def addtodatabase():
deednum=deed.get()
description=textwindow.get("1.0",END)
connect = sqlite3.connect("mydata.db")
cur=connect.cursor()
cur.execute("INSERT INTO mytable VALUES(?,?)",([deednum,description]))
connect.commit()
cleargui()
def getdata():
connect = sqlite3.connect("mydata.db")
cur=connect.cursor()
thedata = cur.execute("SELECT * FROM mytable")
for row in thedata:
textwindow.insert("100.0",row[0]+"\n"+row[1]+"\n")
connectdb()#creates a database if none exists.
root=Tk()
root.title("PROPERTY DESCRIPTION DATABASE")
root.config(bg='lightblue')
lbl=Label(root,text="Deed number").pack()
deed=Entry(root,text="Deed number")
deed.pack()
textwindow=Text(root,background='white')
textwindow.pack()
btn=Button(root,text='Add to Database ',command=addtodatabase)
btn.pack()
btn2=Button(root,text="Show data",command=getdata)
btn2.pack()
btn3=Button(root,text="Clear window",command=cleargui)
btn3.pack()
root.mainloop()
Added Buttons and new functions to my Text Editor
from Tkinter import *
def cleargui():
textwindow.delete("1.0",END)
def createfile(): #Creates a text file if none exitst.
f=open('propertydescripts.txt','a')
def save_changes():
f=open('propertydescripts.txt','a')
theletter=textwindow.get("1.0",END)
f.write('-----------------------------------------------------\n')
f.write(theletter)
f.close()
cleargui()
print("Edits saved ")
def loadletter():
f=open('propertydescripts.txt','r')
for line in f:
textwindow.insert("300.0",line)#change the 300 to match file length
def showtext():
f=open('propertydescripts.txt','a')
createfile()
root=Tk()
root.title("Steve's simple text editor.")
root.config(bg='lightblue')
textwindow=Text(root,background='white')
textwindow.pack()
btn=Button(root,text='Append ',command=save_changes)
btn.pack()
btn2=Button(root,text="Show ", command=loadletter)
btn2.pack()
btn3=Button(root,text="Clear ", command=cleargui)
btn3.pack()
showtext()
root.mainloop()
def cleargui():
textwindow.delete("1.0",END)
def createfile(): #Creates a text file if none exitst.
f=open('propertydescripts.txt','a')
def save_changes():
f=open('propertydescripts.txt','a')
theletter=textwindow.get("1.0",END)
f.write('-----------------------------------------------------\n')
f.write(theletter)
f.close()
cleargui()
print("Edits saved ")
def loadletter():
f=open('propertydescripts.txt','r')
for line in f:
textwindow.insert("300.0",line)#change the 300 to match file length
def showtext():
f=open('propertydescripts.txt','a')
createfile()
root=Tk()
root.title("Steve's simple text editor.")
root.config(bg='lightblue')
textwindow=Text(root,background='white')
textwindow.pack()
btn=Button(root,text='Append ',command=save_changes)
btn.pack()
btn2=Button(root,text="Show ", command=loadletter)
btn2.pack()
btn3=Button(root,text="Clear ", command=cleargui)
btn3.pack()
showtext()
root.mainloop()
Saturday, July 27, 2013
BARE BONES TEXT EDITOR
I created a simple letter viewer for work. All it does is open the letter, but it can save changes too. I'm going to add it to my letter writing program at work.
from Tkinter import *
#A bare bones editor to view or make changes to a letter if needed.
def save_changes():
f=open('theletter.txt','w')
theletter=textwindow.get("1.0",END)
f.write(theletter)
f.close()
print("Edits saved ")
def loadletter():
f=open('theletter.txt','r')
for line in f:
textwindow.insert("30.0",line)#change the 30 to match file length
root=Tk()
textwindow=Text(root,background='white')
textwindow.pack()
btn=Button(root,text='Save changes',command=save_changes)
btn.pack()
loadletter()
root.mainloop()
Saturday, July 6, 2013
I DID IT!
I made an HTML form and then used PHP to get the data from it, and store the data into a SQL database! This is so cool!
Wednesday, July 3, 2013
SWITCHED FROM PYTHON TO PHP!
I created this prototype using PHP and HTML, and I want to get it on the server at work. It will make things simpler for the staff at the office, and for me too!
Subscribe to:
Posts (Atom)
Followers
Blog Archive
- June (1)
- March (3)
- February (1)
- July (3)
- May (1)
- April (1)
- March (1)
- January (1)
- December (1)
- November (4)
- July (3)
- May (2)
- April (1)
- March (6)
- February (2)
- December (1)
- November (1)
- September (3)
- August (3)
- July (1)
- March (3)
- January (1)
- December (5)
- November (2)
- October (1)
- September (2)
- August (1)
- July (4)
- May (3)
- February (1)
- January (1)
- December (1)
- November (2)
- October (2)
- September (9)
- August (2)
- May (1)
- April (1)
- March (6)
- February (5)
- January (3)
- August (2)











