Jul-22-2023, 08:03 AM
hi.
I have 1 root window containing controls and a map widget,showing a modern map.
(approx line no 12-26)
and
1 top window. containing a label with an image (of a historical map) assigned.
(approx line no 153-167). (Preferred shown without title field, but not a must.)
I have no idea of fitting the image exactly over the map window(x=450,y=100) at root window (named: window)
I have tried several approaches, last shown using frame but the image is stubborn, simply refuse to move.
Perhaps some of You have a solution?
Attached is an image showing the issue.
I have 1 root window containing controls and a map widget,showing a modern map.
(approx line no 12-26)
and
1 top window. containing a label with an image (of a historical map) assigned.
(approx line no 153-167). (Preferred shown without title field, but not a must.)
I have no idea of fitting the image exactly over the map window(x=450,y=100) at root window (named: window)
I have tried several approaches, last shown using frame but the image is stubborn, simply refuse to move.
Perhaps some of You have a solution?
Attached is an image showing the issue.
import tkinter
import tkintermapview
from tkinter.ttk import *
import customtkinter
from PIL import ImageTk,Image
from tkinter import *
import pyperclip
import pyautogui
#------------init window------------
window = Tk()
window.geometry(f"{1920}x{1200}")
window.minsize(1920, 1200)
window.resizable(False, False)
window.title("tittel")
window.state("normal")
window.config(background="#704824")
window.wm_attributes('-topmost', 'True')
#------------init map----------------
map_widget = tkintermapview.TkinterMapView(window, width=1000, height=1000, corner_radius=0)
map_widget.place(x=460,y=100)
# Set default values
map_widget.set_position(60.03345, 11.35806, marker = True)
map_widget.set_zoom(16)
#---------------xy screen coords of movement mouse----------
def motion(event):
inp_posskjermx["text"] = f"{event.x}"
inp_posskjermy["text"] = f"{event.y}"
inp_posskjermx.configure(text=f"{event.x}") # , {event.y}")
inp_posskjermy.configure(text=f"{event.y}") # , {event.x}")
window.bind('<Motion>', motion)
#----------left MB clicked view geo coordinates----------------
def left_click_event(coordinates_tuple):
geoposlon, geoposlat = coordinates_tuple
# inp_longitude.configure(text=str(geoposlon))
text1= str(geoposlon)
text2= str(geoposlat)
set_text1(text1)
set_text2(text2)
# inp_latitude.configure(text=str(geoposlat))
map_widget.add_left_click_map_command(left_click_event)
#--------------right mb clicked
def add_marker_event(coords):
new_marker = map_widget.set_marker(coords[0], coords[1], text="new marker")
map_widget.add_right_click_menu_command(label="Add Marker",
command=add_marker_event,
pass_coords=True)
#--------------some in out controls-------------
# velgmapsup = customtkinter.CTkLabel(window,font=("Ariel",14),text_color="#ffd700", text="Velg mapsupplier")# .place(x=1480,y=143)
slide1val= customtkinter.CTkLabel(window, width=50,font=("Ariel",16,"bold"),text_color="#000000",fg_color="#e1c79f", text="", justify=("center"))
slide1val.place(x=1800,y=107)
inp_posskjermy = customtkinter.CTkLabel(window, width=45, fg_color="#e1c79f", text_color="#000000", text ="original", font=("Ariel",16,"bold"), justify=("left"))
inp_posskjermy.place(x=255,y=277)
inp_posskjermx = customtkinter.CTkLabel(window,width=45, fg_color="#e1c79f", text ="original", font=("Ariel",16,"bold"), justify=("left"))
inp_posskjermx.place(x=160,y=277)
# adresse = customtkinter.CTkLabel(window,width=1805, fg_color="#e1c79f", text_color ="#aa0000", font=("Ariel",20,"bold"), text="Adresse", justify=("center"),anchor="center").place(x=58,y=16)
inp_adresse = customtkinter.CTkEntry(window, width=1800, font=("Ariel",16,"bold"), placeholder_text="Fjellvegen 4, Auli, Norway ", justify=("center"))
inp_adresse.place(x=67,y=5)
#----------view longitude and latitude coordinates----------------------
inp_longitude = customtkinter.CTkEntry(window, width=200, font=("Ariel",16,"bold"), placeholder_text="Longitude decimal", justify=("center"))
inp_longitude.place(x=540,y=58)
inp_latitude = customtkinter.CTkEntry(window, width=200, font=("Ariel",16,"bold"), placeholder_text="Latitude decimal", justify=("center"))
inp_latitude.place(x=1160,y=58)
def set_text1(text1):
inp_longitude.delete(0,END)
inp_longitude.insert(0,text1)
return
def set_text2(text2):
inp_latitude.delete(0,END)
inp_latitude.insert(0,text2)
return
#---------------------change map supplier-----------------------
def change_map(new_map: str):
if new_map == "OpenStreetMap":
map_widget.set_tile_server("https://a.tile.openstreetmap.org/{z}/{x}/{y}.png")
elif new_map == "Google normal":
map_widget.set_tile_server("https://mt0.google.com/vt/lyrs=m&hl=en&x={x}&y={y}&z={z}&s=Ga", max_zoom=22)
elif new_map == "Google satellite":
map_widget.set_tile_server("https://mt0.google.com/vt/lyrs=s&hl=en&x={x}&y={y}&z={z}&s=Ga", max_zoom=22)
map_option_menu = customtkinter.CTkOptionMenu(window,values=["OpenStreetMap", "Google normal", "Google satellite"],command=change_map)
map_option_menu.place(x=1490,y=250)
#-------------arrow keys for transparency num arrow keys for rootmap movement------------------
def left(event):
x=10
y=10
window.move(map_widget,x,y)
window.bind("<Left>", left)
def right(event):
pass
window.bind("<Right>", right)
#------------slider for mapview transparency--------------------------------
def slider1_event(value):
window.attributes("-alpha",slider1.get())
slide1val.configure(text=str(round(value,2)))
slider1 = customtkinter.CTkSlider(window, fg_color="red", from_=0, to=1.0, number_of_steps=20,command=slider1_event)
slider1.place(x=1590,y=107)
#----------------calc if a point is within a rectangle--------------------
def area(x1, y1, x2, y2, x3, y3):
return abs((x1 * (y2 - y3) +
x2 * (y3 - y1) +
x3 * (y1 - y2)) / 2.0)
def check(x1, y1, x2, y2, x3,
y3, x4, y4, x, y):
# Calculate area of rectangle ABCD
A = (area(x1, y1, x2, y2, x3, y3) +
area(x1, y1, x4, y4, x3, y3))
# Calculate area of triangle PAB
A1 = area(x, y, x1, y1, x2, y2)
# Calculate area of triangle PBC
A2 = area(x, y, x2, y2, x3, y3)
# Calculate area of triangle PCD
A3 = area(x, y, x3, y3, x4, y4)
# Calculate area of triangle PAD
A4 = area(x, y, x1, y1, x4, y4);
# Check if sum of A1, A2, A3
# and A4 is same as A
return (A == A1 + A2 + A3 + A4)
#---------create top lvl window ---------------
w="1000"
h="1000"
top = Toplevel()
top.geometry('{}x{}'.format(w, h))
imageName=PhotoImage(file="D:\\bilde/auli.png")
mylbl = Label(top,image=imageName)
top.wm_attributes('-fullscreen', 'True')
top.wm_minsize(width=1000, height=1000)
top.wm_maxsize(width=1000, height=1000)
mylbl.grid(column=0, row=0)
top.columnconfigure(0, weight=0)
top.rowconfigure(0, weight=0)
inp_markno = customtkinter.CTkEntry(window, placeholder_text="123", justify=("center"))
inp_markno.place(x=160,y=100)
# inp_markno = customtkinter.CTkLabel(window, width=140, fg_color="#e1c79f", font=("Ariel",14,"bold"),text_color="#aa0000", text="", justify=("left"))
# inp_markno = customtkinter.CTkText(window,width=140, fg_color="#e1c79f", font=("Ariel",14,"bold"),text_color="#aa0000", text="", justify=("left"))
inp_totmarkno = customtkinter.CTkLabel(window, width=140, fg_color="#e1c79f", font=("Ariel",14,"bold"),text_color="#aa0000", text="", justify=("left")).place(x=160,y=50)
markno = customtkinter.CTkLabel(window, width=140, font=("Ariel",14,"bold"),text_color="#ffd700", fg_color="#704924", text="MARKØR NO").place(x=160,y=130)
mark = customtkinter.CTkLabel(window, width=140, font=("Ariel",14,"bold"),text_color="#ffd700", fg_color="#704924", text="TOTAL MARKØRER").place(x=160,y=70)
eventid = customtkinter.CTkLabel(window, font=("Ariel",14,"bold"),fg_color="#704924",text_color="#ffd700", text="EVENT ID:", justify=("left")).place(x=12,y=169)
poskart = customtkinter.CTkLabel(window, font=("Ariel",14,"bold"),fg_color="#704924",text_color="#ffd700", text="POS.KART:", justify=("left")).place(x=12,y=205)
zoomlvl = customtkinter.CTkLabel(window, font=("Ariel",14,"bold"),fg_color="#704924",text_color="#ffd700", text="ZOOM LVL:", justify=("left")).place(x=12,y=241)
posskjerm = customtkinter.CTkLabel(window, font=("Ariel",14,"bold"),bg_color="#704924",text_color = "#ffd700", text="POS.SKJERM:", justify=("left"))
posskjerm.place(x=12,y=277)
objnavn1 = customtkinter.CTkLabel(window, font=("Ariel",14,"bold"),bg_color="#704924",text_color="#ffd700", text="OBJ.NAVN1:", justify=("left")).place(x=12,y=313)
objnavn2 = customtkinter.CTkLabel(window, font=("Ariel",14,"bold"),bg_color="#704924",text_color="#ffd700", text="OBJ.NAVN2:", justify=("left")).place(x=12,y=349)
hendelse = customtkinter.CTkLabel(window, font=("Ariel",14,"bold"),bg_color="#704924",text_color="#ffd700", text="EVENT:", justify=("left")).place(x=12,y=385)
år = customtkinter.CTkLabel(window, font=("Ariel",14,"bold"),bg_color="#704924",text_color="#ffd700", text="ÅR", justify=("left")).place(x=12,y=421)
objtype = customtkinter.CTkLabel(window, font=("Ariel",14,"bold"),bg_color="#704924",text_color="#ffd700", text="OBJ.TYPE:", justify=("left")).place(x=12,y=457)
sted = customtkinter.CTkLabel(window, font=("Ariel",14,"bold"),bg_color="#704924",text_color="#ffd700", text="STED:", justify=("left")).place(x=12,y=493)
kommune = customtkinter.CTkLabel(window, font=("Ariel",14,"bold"),bg_color="#704924",text_color="#ffd700", text="KOMMUNE 1947:", justify=("left")).place(x=12,y=529)
fylke = customtkinter.CTkLabel(window, font=("Ariel",14,"bold"),bg_color="#704924",text_color="#ffd700", text="FYLKE:", justify=("left")).place(x=12,y=565)
land = customtkinter.CTkLabel(window, font=("Ariel",14,"bold"),bg_color="#704924",text_color="#ffd700", text="LAND:", justify=("left")).place(x=12,y=601)
country = customtkinter.CTkLabel(window, font=("Ariel",14,"bold"),bg_color="#704924",text_color="#ffd700", text="COUNTRY:", justify=("left")).place(x=12,y=637)
webaddress = customtkinter.CTkLabel(window, font=("Ariel",14,"bold"),bg_color="#704924",text_color="#ffd700", text="URL:", justify=("left")).place(x=12,y=673)
urlbilde1 = customtkinter.CTkLabel(window, font=("Ariel",14,"bold"),bg_color="#704924",text_color="#ffd700", text="URL BILDE 1:", justify=("left")).place(x=12,y=709)
urlbilde2 = customtkinter.CTkLabel(window, font=("Ariel",14,"bold"),bg_color="#704924",text_color="#ffd700", text="URL BILDE 2:", justify=("left")).place(x=12,y=745)
stitilbilde = customtkinter.CTkLabel(window, font=("Ariel",14,"bold"),bg_color="#704924",text_color="#ffd700", text="STI TIL BILDE:", justify=("left")).place(x=12,y=781)
notice = customtkinter.CTkLabel(window, font=("Ariel",14,"bold"),bg_color="#704924",text_color="#ffd700", text="NOTIS", justify=("left")).place(x=12,y=817)
# Create text widget and specify size.
inp_noti= Text(window, height = 5, width = 52)
inp_noti.place(x=12,y=853)
btnlongitude = customtkinter.CTkButton(window, width=85, font=("Ariel",16,"bold"), fg_color="#add19e",text_color="#aa0000", text="LONG").place(x=450,y=56)
btnlatitude = customtkinter.CTkButton(window, width=85, font=("Ariel",16,"bold"), fg_color="#add19e",text_color="#aa0000", text="LATI").place(x=1365,y=56)
btnlagremarkør = customtkinter.CTkButton(window, width=145, font=("Ariel",16,"bold"), border_color="#add19e", fg_color="#e1c79f",text_color="#aa0000", text="LAGRE MARKØR").place(x=875,y=56)
btnmarkprev = customtkinter.CTkButton(window, font=("Ariel",18,"bold"), border_color="#add19e", fg_color="#e1c79f",text_color="#aa0000", text="-").place(x=12, y=100)
btnmarknext = customtkinter.CTkButton(window, font=("Ariel",18,"bold"), border_color="#add19e", fg_color="#e1c79f",text_color="#aa0000", text="+").place(x=307, y=100)
slide1val= customtkinter.CTkLabel(window, width=50,font=("Ariel",16,"bold"),text_color="#000000",fg_color="#e1c79f", text="", justify=("center"))
slide1val.place(x=1800,y=107)
current_position = map_widget.get_position()
window.mainloop()
