Code: Alles auswählen
from Tkinter import *
import string
import win32com.client #fuer Excel
import time
import thread
#**********************************************************************************************
def sleepFunction( msg, seconds, ):
textfenster.insert(END, msg)
while bitAutolog==1:
textfenster.insert(END,"\nSleep ? -->")
time.sleep(seconds)
connect_it()
def connect_it():
global z
textfenster.insert(END,"\nVerbindung ? ")
if exportieren == 1:
try:
z=z+1
textfenster.insert(END," hat ")
worksheet.Cells(z,1).Value = "Excel Test"+str(z)
textfenster.insert(END,"geklappt")
except:
textfenster.insert(END," fehlgeschlagen ")
else: textfenster.insert(END," ohne Export ")
def export_it():
global exportieren
if exportieren == 0:
btnExport["bg"] = "green"
btnExport["text"] ="Export on"
textfenster.insert(END,'\nExport eingeschaltet ! \n')
exportieren=1
ExcelApp.visible = 1
else :
exportieren=0
btnExport["bg"] = "grey"
btnExport["text"] ="Export off"
textfenster.insert(END,'\nExport ausgeschaltet ! \n')
ExcelApp.visible = 0
def ende():
ExcelApp.visible=0
ExcelApp.Quit() # Beendet Excel
root.destroy()
def autolog_it():
global bitAutolog
if bitAutolog == 0:
btnAutolog["bg"] = "green"
btnAutolog["text"] ="Autolog on"
bitAutolog=1
thread.start_new_thread(sleepFunction,("\nAutologgen gestartet\n",2))
else :
bitAutolog=0
btnAutolog["bg"] = "grey"
btnAutolog["text"] ="Autolog off"
textfenster.insert(END,'\nAutolog ausgeschaltet ! \n')
#******************************************************************************************************************
strTime=time.strftime("%Y_%m_%d %H_%M_%S")
root=Tk()
root.title(' DataLogControl')
root.wm_geometry('800x600+40+40')
ExcelApp=win32com.client.Dispatch("Excel.Application")
ExcelApp.DisplayAlerts=0# schaltet Benutzerabfragen ab
workbook = ExcelApp.Workbooks.Add() # legt neuen Arbeitsbereich vom "Typ" Excel an.
worksheet=workbook.Worksheets('Tabelle1') # Setzt den Focus auf die Mappe "Tabelle1"
ExcelApp.visible = 0# 1 Laesst Excel sichtbar werden damit man den Import mitverfolgen kann
z=2 #beginne in zweiter Zeile
exportieren=0#exportieren ausgeschaltet
bitAutolog=0#autolog ausgeschaltet
frameoben=Frame(root)
frameoben.pack(expand=YES, fill=BOTH)
frameunten = Frame(root,bg='white')
frameunten.pack(side=BOTTOM,expand=YES, fill=BOTH)
textfenster=Text(frameunten, height=40, bg='white')
textfenster.pack(expand=YES, fill=BOTH)
btnConnect=Button(frameoben,text='Connect_it',command=connect_it)
btnBeenden=Button(frameoben,text='Beenden',command=ende)
btnExport=Button(frameoben,text='Export',command=export_it)
btnAutolog=Button(frameoben,text='Auto Connect_it',command=autolog_it)
btnConnect.grid(row=5,column=1)
btnBeenden.grid(row=5,column=6)
btnExport.grid(row=5,column=3)
btnAutolog.grid(row=5,column=4)
root.mainloop()
btnConnect=Button(frameoben,text='Connect',command=connect_it)
funktioniert alles wunderbar.
Wenn ich die Funktion automatisch von einem Thread ausführen lassen möchte funktioniert sie nicht und bricht an der Stelle :
worksheet.Cells(z,1).Value="..."
ab.
Edit (Leonidas): Code in Python-Tags gesetzt.