created GUI

This commit is contained in:
romanschenk37 2022-03-10 21:51:55 +01:00
parent 443f980fa8
commit 752208fe7e
1 changed files with 117 additions and 39 deletions

156
Main.py
View File

@ -1,57 +1,42 @@
# pip install webdriver-manager import tkinter
import threading
from selenium import webdriver from selenium import webdriver
from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from PIL import Image from PIL import Image
from tkinter import filedialog
import time import time
import os
exit = False exit = False
print("Welcome to application Sonnendach") stopThread = False
print("Website is opening") filename_adresslist = ""
adresslist = ""
step = 0
s = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=s)
driver.minimize_window()
outputtext = "Welcome to application Sonnendach\n"
try: def search_adresses(adress_list, filename_adresslist, driver):
s = Service(ChromeDriverManager().install()) file_split_char = ","
driver = webdriver.Chrome(service=s) global exit
driver.maximize_window()
driver.get("https://www.uvek-gis.admin.ch/BFE/sonnendach/")
driver.implicitly_wait(20)
print("opening website was done.")
print("Make your Windows ready to create screenshots.")
input("Press Enter to start")
except:
print("opening website failed")
exit = True
filename_adresslist = input("Please type in Filename to read.")
file_split_char = ";"
print("Reading File " + filename_adresslist)
try:
adress_file = open(filename_adresslist, "r")
adress_list = adress_file.read().splitlines()
adress_file.close()
except:
print("Reading file " + filename_adresslist + " failed.")
exit = True
if(exit == False):
for i in range(len(adress_list)): for i in range(len(adress_list)):
line = adress_list[i] line = adress_list[i]
adress = line.split(file_split_char) adress = line.split(file_split_char)
if((line == adress_list[0]) | ((adress[20][0:11] == "screenshots"))): if((line != adress_list[0]) & ((adress[20][0:11] != "screenshots"))):
pass print(adress)
else:
search_string = adress[15] + " " + adress[3] + " " + adress[11] + " " + adress[13] search_string = adress[15] + " " + adress[3] + " " + adress[11] + " " + adress[13]
search_bar = driver.find_element(By.ID, "searchTypeahead1") search_bar = driver.find_element(By.ID, "searchTypeahead1")
search_bar.clear() search_bar.send_keys(Keys.CONTROL + "a")
search_bar.send_keys(Keys.DELETE)
search_bar.send_keys(search_string) search_bar.send_keys(search_string)
driver.implicitly_wait(120) driver.implicitly_wait(10)
found = False found = False
suggestions = driver.find_elements(By.XPATH, "//div[@class='tt-suggestion tt-selectable']") suggestions = driver.find_elements(By.XPATH, "//div[@class='tt-suggestion tt-selectable']")
@ -104,4 +89,97 @@ if(exit == False):
else: else:
print("not found: " + search_string) print("not found: " + search_string)
input("finished. Press Enter to exit.") if(stopThread == True):
print("Exit")
break
def read_adresslist(filename_adresslist):
returnvalues = []
try:
adress_file = open(filename_adresslist, "r")
adress_list = adress_file.read().splitlines()
adress_file.close()
returnvalues.append(True)
returnvalues.append(adress_list)
except:
returnvalues.append(False)
return returnvalues
def command():
global exit
global stopThread
global adresslist
global step
global driver
global filename_adresslist
global outputtext
global thread_search_adresses
if(exit):
stopThread = True
outputtext = outputtext + "Application will stop" + "\n"
text1.config(text=outputtext)
thread_search_adresses.join()
root.quit()
driver.quit()
elif(step == 0):
#Schritt 1
filename_adresslist = filedialog.askopenfilename()
outputtext = outputtext + "Reading File " + filename_adresslist + "\n"
text1.config(text=outputtext)
adress_list_result = read_adresslist(filename_adresslist)
if(adress_list_result):
adresslist = adress_list_result[1]
outputtext = outputtext + "Reading file " + filename_adresslist + " done." + "\n"
text1.config(text=outputtext)
button1.config(text="open Webbrowser")
step += 1
else:
outputtext = outputtext + "Reading file " + filename_adresslist + " failed." + "\n"
text1.config(text=outputtext)
exit = True
button1.grid_remove()
elif(step == 1):
# Schritt 2
outputtext = outputtext + "Website is opening" + "\n"
text1.config(text=outputtext)
try:
driver.maximize_window()
driver.get("https://www.uvek-gis.admin.ch/BFE/sonnendach/")
driver.implicitly_wait(20)
outputtext = outputtext + "opening website was done.\nPrepare the browser window to create screenshots." + "\n"
text1.config(text=outputtext)
button1.config(text="start process")
step += 1
except:
outputtext = outputtext + "opening website failed" + "\n"
text1.config(text=outputtext)
exit = True
button1.grid_remove()
elif(step == 2):
thread_search_adresses = threading.Thread(target=search_adresses, args=(adresslist, filename_adresslist, driver))
thread_search_adresses.start()
#search_adresses(adresslist, filename_adresslist, driver)
outputtext = outputtext + "process running." + "\n"
text1.config(text=outputtext)
button1.grid_remove()
exit = True
def command_exit():
exit = True
command()
root = tkinter.Tk()
root.wm_title("Sonnendach")
text1 = tkinter.Label(root, text=outputtext, width=80, height=30)
text1.grid(row=1, column=1, padx=10, pady=3)
button1 = tkinter.Button(root, text="Select Adresslist file", command=command, width=20, height=2, bg="#FCCA03")
button1.grid(row=2, column=1, padx=10, pady=3)
button2 = tkinter.Button(root, text="EXIT", command=command_exit, width=20, height=2, bg="#FCCA03")
button2.grid(row=2, column=2, padx=10, pady=3)
root.mainloop()