Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! /usr/bin/python
- # -*- coding: utf-8 -*-
- #
- #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- # APRS (c) by Dirk Unverzagt, DL8AAX
- # http://www.http://www.modellbau-yodi.de/aax/
- #
- #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- from Tkinter import *
- from time import strptime
- from calendar import timegm
- from ScrolledText import *
- import tkMessageBox
- import tkSimpleDialog
- import thread
- import time
- import os
- from socket import *
- import string
- import sys
- import requests
- import threading
- from PIL import Image, ImageTk
- from tkFileDialog import *
- version = '0.01'
- myHome= os.environ.get("HOME")
- ## globale Variablen
- mys = None
- thread_flag = 1
- #rbtn_a=None
- af=0
- lastbtime=0
- imageDisconnect='network_wired_disconnected.jpg'
- imageConect='/usr/share/icons/gnome/24x24/status/connect_established.png'
- imageExit='/usr/share/icons/gnome/32x32/actions/application-exit.png'
- imageSendBake='/usr/share/icons/gnome/32x32/actions/go-home.png'
- global e1
- global e2
- global confi
- global einst_zeige
- global iststatus
- global verbunden
- verbunden=0
- einst_zeige =0
- istlogin=0
- istrxsave=0
- address = '195.190.142.207'
- port = 14577
- clx_call= 'DB0ERF-5'
- ABOUT_TEXT = "a text"
- DISCLAIMER = "b text"
- data=None
- rxsavedatabytes=0
- bakezeitH=0
- bakezeitM=0
- bakezeitS=0
- #t = threading.Timer(1.0, machmabakezeit())
- #t.start()
- def lade_liz():
- global licence
- try:
- lic = open("license.txt","r")
- licence = lic.read()
- lic.close()
- except:
- licence="LICENCE.txt is not read..."
- def About():
- abut=Toplevel()
- abut.title("About")
- abut.geometry("480x320")
- abut.configure(bg='#C9C9C9')
- abut.resizable(0,0)
- ab1=Label(abut,text="pyAPRS",bg="#C9C9C9",font=("Sans",16,"bold"))
- ab1.pack()
- ab1_1=Label(abut,text="python APRS for HAM Users",bg="#C9C9C9",font=("Sans",12))
- ab1_1.pack()
- ab2=Label(abut,text="version v"+version,bg="#C9C9C9",font=("Sans",10))
- ab2.pack()
- ab3=Label(abut,text="author: Dirk Unverzagt, DL8AAX",bg="#C9C9C9",font=("Sans",10))
- ab3.pack()
- ab5=Label(abut,text="published in 00.2017",bg="#C9C9C9",font=("Sans",10))
- ab5.pack()
- lade_liz()
- abscrollbar = Scrollbar(abut,orient=VERTICAL)
- abscrollbar.pack(side=RIGHT, fill=Y)
- ab4=Text(abut,font=("Courier",8),yscrollcommand=abscrollbar.set)
- abscrollbar.config(command=ab4.yview)
- ab4.pack()
- ab4.insert(INSERT,licence)
- ab4.config(state=DISABLED)
- abut.protocol("WM_DELETE_WINDOW", about)
- abut.withdraw()
- def speichern():
- #print "passwort="+e2.get()
- lic = open(myHome+"/pyaprs/.einstellungen.txt","w")
- lic.write( "# Konfigurationsdatei für pyaprs "+version+" \n")
- lic.write( "# (c) Dirk Ubcerzagt, DL8AAX \n")
- lic.write( "# \n")
- lic.write( "call ="+e1.get()+"\n")
- lic.write( "name ="+e2.get()+"\n")
- lic.write( "LängengradOst ="+e4.get()+"\n")
- lic.write( "LängengradWest ="+e5.get()+"\n")
- lic.write( "Bakentyp =" +e6.get()+"\n")
- lic.write( "Symbolart =" +e7.get()+"\n")
- lic.write( "Symbolbild ="+e8.get()+"\n")
- lic.write( "Bakentext =" +e9.get()+"\n")
- lic.write( "Kommentar =" +e10.get()+"\n")
- lic.write( "passwort =" +e3.get()+"\n")
- lic.write( "serverHost ="+e11.get()+"\n")
- lic.write( "serverPort ="+e12.get()+" \n")
- lic.write( "Adresse ="+e13.get()+"\n")
- lic.write( " \n")
- lic.write( " \n")
- lic.close()
- confiquit()
- def confiquit():
- confi.quit()
- confi.destroy()
- def prgende():
- global verbunden
- if verbunden==1:
- mys.close()
- verbunden =0
- fenster.quit()
- fenster.destroy()
- def einst():
- global einst_zeige
- if einst_zeige==0:
- confi.update()
- confi.deiconify()
- einst_zeige=1
- lieskonfi()
- else:
- confi.withdraw()
- einst_zeige=0
- #speichern()
- #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- # Fenster zu Programmeinstellungen
- #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- confi =Tk()
- #confi =Toplevel()
- confi.protocol("WM_DELETE_WINDOW", confi)
- confi.title("pyAPRS")
- confi.geometry('320x440')
- if einst_zeige==0:confi.withdraw()
- label_call = Label(confi, text="Call", height=0, width=10).grid(row=0, column=0, sticky=W, pady=4)
- label_call = Label(confi, text="Name", height=0, width=10).grid(row=1, column=0, sticky=W, pady=4)
- label_pass = Label(confi, text="passwort", height=0, width=10).grid(row=2, column=0, sticky=W, pady=4)
- label_west = Label(confi, text="Längengrad Ost", height=0, width=13).grid(row=3, column=0, sticky=W, pady=4)
- label_ost = Label(confi, text="Längengrad West", height=0, width=14).grid(row=4, column=0, sticky=W, pady=4)
- label_bt = Label(confi, text="Bakentyp", height=0, width=14).grid(row=5, column=0, sticky=W, pady=4)
- abel_sart = Label(confi, text="Symbolart", height=0, width=14).grid(row=6, column=0, sticky=W, pady=4)
- abel_sbild = Label(confi, text="Symbolbild", height=0, width=14).grid(row=7, column=0, sticky=W, pady=4)
- label_btext= Label(confi, text="Bakentext", height=0, width=14).grid(row=8, column=0, sticky=W, pady=4)
- label_komm = Label(confi, text="Kommentar", height=0, width=14).grid(row=9, column=0, sticky=W, pady=4)
- label_sev = Label(confi, text="serverHost", height=0, width=14).grid(row=10, column=0, sticky=W, pady=4)
- label_sport= Label(confi, text="serverPort", height=0, width=14).grid(row=11, column=0, sticky=W, pady=4)
- label_adr = Label(confi, text="Adresse", height=0, width=14).grid(row=12, column=0, sticky=W, pady=4)
- e1=Entry(confi,width=10) # call
- e1.grid(row=0, column=1)
- e2=Entry(confi,width=10) # name
- e2.grid(row=1, column=1)
- e3=Entry(confi,width=10) # passw
- e3.grid(row=2, column=1)
- e4=Entry(confi,width=12) # lo
- e4.grid(row=3, column=1)
- e5=Entry(confi,width=12) # lw
- e5.grid(row=4, column=1)
- e6=Entry(confi,width=4) # Bakentyp
- e6.grid(row=5, column=1)
- e7=Entry(confi,width=4) # Symbolart
- e7.grid(row=6, column=1)
- e8=Entry(confi,width=4) # Symbolbild
- e8.grid(row=7, column=1)
- e9=Entry(confi,width=20) # Bakentext
- e9.grid(row=8, column=1)
- e10=Entry(confi,width=20) # Kommentar
- e10.grid(row=9, column=1)
- e11=Entry(confi,width=15) # serverHost
- e11.grid(row=10, column=1)
- e12=Entry(confi,width=15) # serverPort
- e12.grid(row=11, column=1)
- e13=Entry(confi,width=20) # Adresse
- e13.grid(row=12, column=1)
- #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- # Eingabefelder mit Daten aus der einstellungendatei füllen
- #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- def lieskonfi():
- file = open(myHome+"/pyaprs/.einstellungen.txt","r")
- for line in file:
- #print(line.rstrip())
- if '#' in line.rstrip():
- print
- else:
- l=line.rstrip()
- larr=l.split(' =')
- if 'call' in l:
- e1.delete(0,END)
- e1.insert(0,larr[1])
- elif 'name' in l:
- e2.delete(0,END)
- e2.insert(0,larr[1])
- elif 'passwort' in l:
- e3.delete(0,END)
- e3.insert(0,larr[1])
- elif 'LängengradOst' in l:
- e4.delete(0,END)
- e4.insert(0,larr[1])
- elif 'LängengradWest' in l:
- e5.delete(0,END)
- e5.insert(0,larr[1])
- elif 'Bakentyp' in l:
- e6.delete(0,END)
- e6.insert(0,larr[1])
- elif 'Symbolart' in l:
- e7.delete(0,END)
- e7.insert(0,larr[1])
- elif 'Symbolbild' in l:
- e8.delete(0,END)
- e8.insert(0,larr[1])
- elif 'Bakentext' in l:
- e9.delete(0,END)
- e9.insert(0,larr[1])
- elif 'Kommentar' in l:
- e10.delete(0,END)
- e10.insert(0,larr[1])
- elif 'serverHost' in l:
- e11.delete(0,END)
- e11.insert(0,larr[1])
- elif 'serverPort' in l:
- e12.delete(0,END)
- e12.insert(0,larr[1])
- elif 'Adresse' in l:
- e13.delete(0,END)
- e13.insert(0,larr[1])
- file.close()
- #~~~
- btn_save=Button(confi, text='Speichern', command=speichern ).grid(row=13, column=0, sticky=W, pady=4)
- btn_quit=Button(confi, text='Abbrechen', command=einst ).grid( row=13, column=1, sticky=W, pady=4)
- def karte():
- print ('Karte zeigen')
- def verbinde_(event):
- verbinde()
- def machmaidentsatz():
- user=e1.get()
- user=user.upper()
- user=user.replace ("\r", "")
- pwt=e3.get()
- pwt=pwt.replace ("\r", "")
- tx_text="user "+user+" pass "+pwt+" vers pyaprs "+version
- senden(tx_text)
- def verbindung():
- global thread_flag
- ## Verbindung zum Server aufbauen und periodisch abfragen
- if thread_flag:
- thread.start_new_thread(verbinden, ())
- thread_flag = 0
- def verbindema():
- global verbunden,asciiport,istlogin
- if verbunden == 0:
- verbindung()
- machmaidentsatz()#identifikation senden
- verbunden=1
- else:
- mys.close()
- verbunden =0
- istlogin=0
- #print "verbindung getrennt"
- iststatus.config(text="Verbindung getrennt mit "+ address + ', Port: ' + asciiport)
- def verbinden():
- global mys, thread_flag,asciiport,istlogin,istrxsave,savedatas,rxsavedatabytes,rbtn_a
- mys=socket(AF_INET,SOCK_STREAM)
- asciiport = e12.get()
- asciiport = asciiport.replace ("\r", "")
- address=e11.get()
- address=address.replace ("\r", "")
- iststatus.config(text="Verbinde mit "+ address + ', Port: ' + asciiport)
- #print "Verbinde mit "+ address + ', Port: ' + asciiport
- #textfenster.insert(END, '\n' + 'Verbinde mit ' + address + ', Port: ' + asciiport)
- #textfenster.see(END)
- try:
- mys.connect((address,port))
- verbunden = 1
- ## Verbindung misslungen!
- except:
- iststatus.config(text='Keine Verbindung möglich, Server ist abgestürzt!')
- verbunden = 0
- # los gehts
- else:
- iststatus.config(text="Verbinden mit "+ address + ', Port: ' + asciiport)
- im = Image.open(imageConect)
- tk_image = ImageTk.PhotoImage(im)
- #btn_con.image=tk_image
- while 1:
- data=mys.recv(1024)
- print data
- #
- #try:
- ## Hier muss der Empfangen-Befehl hin!
- #data=mys.recv(1024)
- #Verbindung beenden
- if data == 'OAIC':
- #print 'Verbindung beendet . . .'
- iststatus.config(text='Verbindung beendet . . .')
- mys.close()
- verbunden = 0
- thread_flag = 1
- break
- else:
- #print 'Daten'+time.strftime("%d.%m.%Y %H:%M:%S")+'\r'+data
- if istrxsave==1: # Alles was reinkommt speichern
- if len(data)>0:
- rxsavedatabytes=rxsavedatabytes+len(data)
- savedatas.write(data)
- #print 'Speicherere RX Daten '+str(rxsavedatabytes)
- iststatus.config(text='Speichere RX Daten '+str(rxsavedatabytes))
- if istlogin==0: # 0= identifizierung noch nichz gesendet
- machmaidentsatz() # identifikation senden
- sendbake() # und gleich eine Bake mit GPS Koordinaten hinterher damit der Datenflus beginnt
- #print 'sende login'
- istlogin=1
- # Eingehende Daten filtern
- data = data.replace ("\r", "") # Zeilenumbruch am Ende entfernen
- machmabakezeit()
- if rbtn_a.get() =="1": # Nur Rohdaten ausgeben
- textfenster.insert(END, data)
- textfenster.see(END)
- elif rbtn_a.get() =="2": # mur MSG Daten ausgeben
- if "::" in data:
- pos_anf=string.find(data, "::")
- txcall=d[0:string.find(data,">")]
- rx_call=data[pos_anf+2:pos_anf+9+2]
- msg=data[pospp+9+3:len(d)]
- msg=msg.replace ("\n", "")
- posack=string.find(d,"{")
- msgnr=str(d[posack+3:len(d)]).zfill(3)
- textfenster.insert(END, txcall+"->"+rx_call+"{"+msgnr+"}:\n"+msg+"\n")
- textfenster.see(END)
- elif rbtn_a.get() =="3": # mur MSG Daten für mich ausgeben
- if "::" in data:
- pos_anf=string.find(data, "::")
- txcall=d[0:string.find(data,">")]
- rx_call=data[pos_anf+2:pos_anf+9+2]
- if rx_call==e1.get():
- posack=string.find(d,"{")
- msgnr=str(d[posack+3:len(d)]).zfill(3)
- msg=data[pospp+9+3:len(d)]
- msg=msg.replace ("\n", "")
- textfenster.insert(END, txcall+"->"+rx_call+"{"+msgnr+"}:\n"+msg+"\n")
- textfenster.see(END)
- if int(msgnr)>0:
- sendeACK(txcall,msgnr)
- elif rbtn_a.get()=="4":
- # keine Ausgabe
- data=''
- else:
- print data
- time.sleep(0.2)
- #except:
- #break ## was schiefgelaufen, das wars . . .
- #iststatus.config(text='Hm.. mit der Verbindung ist was schief gelaufen...')
- def sendeACK(txcall,msgnr):
- adr=e13.get()
- adr=adr.replace ("\n", "")
- mycall=e1.get()
- mycall=user.upper()
- mycall=mycall.replace ("\n", "")
- tx_text=mycall+">"+ adr + "::"+txcall+":ACK"+msgnr
- senden(tx_text)
- def senden(tx_text):
- global mys, verbunden
- ##
- if verbunden==1:
- # msg_liste.addEntry(msg)
- tx_text = tx_text + "\n"
- mys.send(tx_text)
- textfenster.insert(END, tx_text)
- textfenster.see(END)
- iststatus.config(text="sende:" + tx_text)
- #print "sende:" + tx_text
- else:
- iststatus.config(text="!!!FEHLER!!! Konte nicht senden, keine Verbindung zum Server!")
- def machmabakezeit():
- global bakezeitM,bakezeitS
- #bm=time.strftime("%M")
- #bs=time.strftime("%s")
- if verbunden==1:
- bakezeitS=bakezeitS-1
- if bakezeitS<1:
- bakezeitS=59
- bakezeitM=bakezeitM-1
- bakeuhr.config(text=str(bakezeitM)+":"+str(bakezeitS))
- if bakezeitM<1 and bakezeitS<1:
- sendbake()
- def sendbake():
- global lastbtimehuman,lastbtime,bakezeitM,bakezeitS
- #
- # Source Path Header — “AEA” Format
- #
- # DL8AAX >APRS,TCPIP*:!5138.00N/00952.98Ey DL8AAX Pytonscript www.modellbau-yodi.de/aax/
- # -absender- !---GPS--!--GPS----! --------------Bakentext----------------------
- # ! ! --y=
- # ! -- /=
- # --!=
- #----------------------------------------------------------------------------------------------------
- # AX.25 UI-FRAME FORMAT !
- #----------------------------------------------------------------------------------------------------
- # Flag ! Destination ! Source ! Digipeater ! Control ! Protocol !INFORMATION FIELD! FCS!Flag!
- # ! Addresses ! Addresses ! Addresses ! Field (UI) ! ID ! ! ! !
- #----------------------------------------------------------------------------------------------------
- # 1 ! 7 ! 7 ! 0 - 56 ! 1 ! ! ! 1-256 ! 2 ! 1!
- #----------------------------------------------------------------------------------------------------
- if verbunden==1:
- user=e1.get()
- user=user.upper()
- user=user.replace ("\n", "")
- adr=e13.get()
- adr=adr.replace ("\n", "")# APRS,TCPIP*:
- lo=e4.get() # länge ost 00952.98E
- lo=lo.replace ("\n", "")
- lw=e5.get() # länge west
- lw=lw.replace ("\n", "")
- symbolart=e7.get()
- symbolart=symbolart.replace ("\n", "")
- baketyp=e6.get()
- baketyp.replace ("\n", "")
- sbild=e8.get()
- sbild=sbild.replace ("\n", "")
- Bakentext=e9.get()
- Bakentext.replace ("\n", "")
- #
- tx_text=user +">"+ adr + ":"+ baketyp +lw+symbolart+lo+sbild+Bakentext+"\n"
- #print tx_text
- istbtime=int(time.strftime("%H%M%S"))
- #print str(istbtime)+">"+str(lastbtime+(30*15))
- Bakenpause=5# 15 min pause :)
- if istbtime>lastbtime+Bakenpause:
- senden(tx_text)
- #textfenster.insert(END, tx_text+"\r")
- #textfenster.config(foreground="blue")
- lastbtime=int(time.strftime("%H%M%S"))
- lastbtimehuman=time.strftime("%H:%M")
- bakezeitM=Bakenpause+15
- bakezeitS=int(time.strftime("%S"))
- bakeuhr.config(text=str(bakezeitM)+":"+str(bakezeitS))
- else:
- iststatus.config(text="Bake wurde doch erst um "+lastbtimehuman+" gesendet")
- def rxsave():
- global istrxsave,savedatas
- if istrxsave==0:
- savedatei=asksaveasfilename(parent=fenster, title='Speichern unter...',initialdir=myHome+"/pyaprs/")
- if len(savedatei)>0:
- #print savedatei
- savedatas = open(savedatei,"w")
- istrxsave=1
- else:
- savedatas.close()
- istrxsave=0
- def ShowChoice():
- print rbtn_a.get()
- def msgsendfenster():
- global zielcall,tx_text
- txfenster=Toplevel()
- txfenster.title("pyAPRS MSG senden")
- txfenster.geometry('480'+"x"+'200')
- #
- #-----------------------------------------------------
- # Buttoneingabefeld _
- #-----------------------------------------------------
- zielcall=Entry(txfenster,width=15)
- zielcall.grid(row=1,column=0,sticky=W,padx=5)
- tx_text=Entry(txfenster,width=70)
- tx_text.grid(row=2,column=0,sticky=W,padx=5)
- btnTX=Button(txfenster, text='TX MSG',command=msgsenden, width=3,height=1, foreground='red',bg='#C9C9C9' )
- btnTX.grid(row=3,column=0,sticky=W,padx=5)
- def msgsenden():
- user=e1.get()
- user=user.upper()
- user=user.replace ("\n", "")
- adr=e13.get()
- adr=adr.replace ("\n", "")
- baketyp=e6.get()
- baketyp.replace ("\n", "")
- msg=tx_text.get()
- #msg=str(msg)
- if len(msg)>67:
- msg=msg[0:67]
- msg_text=user +">"+ adr + baketyp +"::"+zielcall.get().ljust(9)+":"+msg+"\n"
- print user +">"+ adr + baketyp +"::"+zielcall.get()+":"+tx_text.get()+"\n"
- textfenster.insert(END,msg_text)
- textfenster.see(END)
- tx_text.delete(0,END)
- #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- # Hauptfenster
- #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- fenster = Toplevel()
- fenster.title("pyAPRS")
- fb='800'
- fh='425'
- fenster.geometry(fb+"x"+fh)
- lframe=LabelFrame(fenster, text="",padx=5, bg='#C9C9C9')
- lframe.grid(row=0,column=0,sticky=W,padx=5)
- rframe=LabelFrame(fenster,text="",padx=5,bg='#C9C9C9')
- rframe.grid(row=0,column=1,padx=5)
- topframe = LabelFrame(lframe,text="top",bg='#C9C9C9')#.place(x = 5, y = 5, height= 30,width=int(fb)-10)
- #topframe.pack(padx=5, expand=0,side=LEFT)
- topframe.grid(row=0,column=0)
- ausgabelabel = LabelFrame(lframe, text="Ausgabe",bg='#C9C9C9' )#.place(x = 5, y = 40, height= 230,width=int(fb)-10)
- #ausgabelabel.pack(padx=5, expand=0,side=LEFT)
- ausgabelabel.grid(row=2,column=0)
- statuslabel = LabelFrame(lframe, text="Status",bg='#C9C9C9')
- #statuslabel.pack(padx=5, expand=0,side=LEFT)
- statuslabel.grid(row=3,column=0)
- mhlabel=LabelFrame(rframe, width=100, text="MH", height=400, bg='#C9C9C9')
- #mhlabel.pack(padx=605, expand=1,side=RIGHT)
- mhlabel.grid(row=0,column=1,padx=5)
- rbtn_a = StringVar(fenster)
- rbtn_a.set(None) # initialize
- #v.set(None)
- b = Radiobutton( ausgabelabel, text="Rohdaten ",variable=rbtn_a, value="1",bg='#C9C9C9',command=ShowChoice)#.place(x = 50, y = 45)
- b.grid(row=0,column=0,sticky=W,padx=4)
- b.select()
- b2 = Radiobutton(ausgabelabel, text="Alle MSGs ",variable=rbtn_a, value="2",bg='#C9C9C9',command=ShowChoice)#.place(x = 10, y = 45)
- b2.grid(row=0,column=0,sticky=W,padx=99)
- b3 = Radiobutton(ausgabelabel, text="Meine MSGs ",variable=rbtn_a, value="3",bg='#C9C9C9',command=ShowChoice)#.place(x = 10, y = 45)
- b3.grid(row=0,column=0,sticky=W,padx=192)
- b4 = Radiobutton(ausgabelabel, text="keine Ausgabe ",variable=rbtn_a, value="4",bg='#C9C9C9',command=ShowChoice)#.place(x = 10, y = 45)
- b4.grid(row=0,column=0,sticky=W,padx=292)
- btnTX=Button(ausgabelabel , text='TX MSG',command=msgsendfenster, width=3,height=1, foreground='red',bg='#C9C9C9' )
- #btn_exit=Button(ausgabelabel , text='TX MSG',command=msgsendfenster, width=3,height=1, foreground='red',bg='#C9C9C9' )
- btnTX.grid(row=0,column=0,sticky=W,padx=420)
- bakestatus=Label(ausgabelabel,text="TX Bake in",bg='#C9C9C9' )
- bakestatus.grid(row=0,column=0,sticky=W,padx=480)
- bakeuhr=Label(ausgabelabel,text="00:00",bg='#C9C9C9' )
- bakeuhr.grid(row=0,column=0,sticky=W,padx=550)
- ###
- textfenster = ScrolledText(ausgabelabel,width=86,height=14,background='#baeaff')#.place(x = 10, y = 55)
- textfenster.grid(row=3,column=0,sticky=W,padx=4)
- ###
- iststatus=Label(statuslabel,text="Moin...", width=90)
- iststatus.grid(row=3,column=0)
- im2 = Image.open(imageExit)
- tk_image2 = ImageTk.PhotoImage(im2)
- btn_exit=Button(topframe , image = tk_image2,command=prgende, width=40,height=40 ).grid(row=1, column=1, sticky=W, padx=540, pady=1)
- im = Image.open(imageDisconnect)
- tk_image = ImageTk.PhotoImage(im)
- btn_con= Button(topframe ,image = tk_image, command=verbindema,width=40,height=40 ).grid(row=1, column=1, sticky=W, padx=1, pady=1)
- im3 = Image.open(imageSendBake)
- tk_image3 = ImageTk.PhotoImage(im3)
- btn_exit=Button(topframe , image = tk_image3,command=sendbake, width=40,height=40 ).grid(row=1, column=1, sticky=W, padx=80, pady=1)
- #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- # Menü Hauptfenster
- #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- menu = Menu(fenster)
- fenster.config(menu=menu)
- filemenu = Menu(menu)
- menu.add_cascade(label="File", menu=filemenu)
- filemenu.add_command(label="Karte zeigen", command=karte)
- filemenu.add_command(label="Einstellungen", command=einst)
- filemenu.add_command(label="RX Daten Speichern", command=rxsave)
- filemenu.add_separator()
- filemenu.add_command(label="Exit", command=fenster.quit)
- helpmenu = Menu(menu)
- menu.add_cascade(label="Help", menu=helpmenu)
- helpmenu.add_command(label="About...", command=About)
- #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- # Existiert eine Dateimit den Einstellungen ?
- # Wenn nicht wird sie angelegt
- #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- iststatus.config(text="Prüfe Config Datei...")
- #
- if os.path.exists(myHome+"/pyaprs/"):
- iststatus.config(text="Config Datei existiert")
- #print "Config Datei existiert"
- else:
- iststatus.config(text="Config Datei wird erstellt..."+myHome+"/pyaprs/.einstellungen.txt")
- #print "Config Datei wird erstellt..."+myHome+"/pyaprs/.einstellungen.txt"
- os.mkdir(myHome+"/pyaprs/")
- lic = open(myHome+"/pyaprs/.einstellungen.txt","w")
- lic.write( "# Konfigurationsdatei für pyaprs "+version+" \n")
- lic.write( "# (c) Dirk Ubcerzagt, DL8AAX \n")
- lic.write( "# \n")
- lic.write( "call =n0call \n")
- lic.write( "name =otto \n")
- lic.write( "LängengradOst =00953.25E \n")
- lic.write( "LängengradWest =5131.04N \n")
- lic.write( "Bakentyp == \n")
- lic.write( "Symbolart =/ \n")
- lic.write( "Symbolbild =y \n")
- lic.write( "Bakentext = \n")
- lic.write( "Kommentar = \n")
- lic.write( "passwort =12960 \n")
- lic.write( "serverHost =195.190.142.207 \n")
- lic.write( "serverPort = \n")
- lic.write( "Adresse =APRS,TCPIP*: \n")
- lic.write( " \n")
- lic.write( " \n")
- lic.close()
- iststatus.config(text="Lese Konfigurationsdatei...")
- lieskonfi()
- fenster.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement