mein Code:
Code: Alles auswählen
def start_programm8():
import tkinter as tk
import customtkinter
from tkintermapview import TkinterMapView
from PIL import Image,ImageTk
import datetime
from pathlib import Path
import subprocess
import platform
customtkinter.set_default_color_theme("blue")
class App(customtkinter.CTk):
APP_NAME = "TkinterMapView with CustomTkinter"
WIDTH = 800
HEIGHT = 500
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.title(App.APP_NAME)
self.geometry(str(App.WIDTH) + "x" + str(App.HEIGHT))
self.minsize(App.WIDTH, App.HEIGHT)
self.protocol("WM_DELETE_WINDOW", self.on_closing)
self.bind("<Command-q>", self.on_closing)
self.bind("<Command-w>", self.on_closing)
self.createcommand('tk::mac::Quit', self.on_closing)
self.marker_list = []
# ============ create two CTkFrames ============
self.grid_columnconfigure(0, weight=0)
self.grid_columnconfigure(1, weight=1)
self.grid_rowconfigure(0, weight=1)
self.frame_left = customtkinter.CTkFrame(master=self, width=150, corner_radius=0, fg_color=None)
self.frame_left.grid(row=0, column=0, padx=0, pady=0, sticky="nsew")
self.frame_right = customtkinter.CTkFrame(master=self, corner_radius=0)
self.frame_right.grid(row=0, column=1, rowspan=1, pady=0, padx=0, sticky="nsew")
# ============ frame_left ============
self.frame_left.grid_rowconfigure(2, weight=1)
self.button_1 = customtkinter.CTkButton(master=self.frame_left,
text="Set Marker",
command=self.set_marker_event)
self.button_1.grid(pady=(20, 0), padx=(20, 20), row=0, column=0)
self.button_2 = customtkinter.CTkButton(master=self.frame_left,
text="Clear Markers",
command=self.clear_marker_event)
self.button_2.grid(pady=(20, 0), padx=(20, 20), row=1, column=0)
self.map_label = customtkinter.CTkLabel(self.frame_left, text="Tile Server:", anchor="w")
self.map_label.grid(row=3, column=0, padx=(20, 20), pady=(20, 0))
self.map_option_menu = customtkinter.CTkOptionMenu(self.frame_left, values=["OpenStreetMap", "Google normal", "Google satellite"],
command=self.change_map)
self.map_option_menu.grid(row=4, column=0, padx=(20, 20), pady=(10, 0))
self.appearance_mode_label = customtkinter.CTkLabel(self.frame_left, text="Appearance Mode:", anchor="w")
self.appearance_mode_label.grid(row=5, column=0, padx=(20, 20), pady=(20, 0))
self.appearance_mode_optionemenu = customtkinter.CTkOptionMenu(self.frame_left, values=["Light", "Dark", "System"],
command=self.change_appearance_mode)
self.appearance_mode_optionemenu.grid(row=6, column=0, padx=(20, 20), pady=(10, 20))
# ============ frame_right ============
self.frame_right.grid_rowconfigure(1, weight=1)
self.frame_right.grid_rowconfigure(0, weight=0)
self.frame_right.grid_columnconfigure(0, weight=1)
self.frame_right.grid_columnconfigure(1, weight=0)
self.frame_right.grid_columnconfigure(2, weight=1)
self.map_widget = TkinterMapView(self.frame_right, corner_radius=0)
self.map_widget.grid(row=1, rowspan=1, column=0, columnspan=3, sticky="nswe", padx=(0, 0), pady=(0, 0))
self.entry = customtkinter.CTkEntry(master=self.frame_right,
placeholder_text="type address")
self.entry.grid(row=0, column=0, sticky="we", padx=(12, 0), pady=12)
self.entry.bind("<Return>", self.search_event)
self.button_5 = customtkinter.CTkButton(master=self.frame_right,
text="Search",
width=90,
command=self.search_event)
self.button_5.grid(row=0, column=1, sticky="w", padx=(12, 0), pady=12)
# Set default values
self.map_widget.set_address("Berlin")
self.map_option_menu.set("OpenStreetMap")
self.appearance_mode_optionemenu.set("Dark")
def search_event(self, event=None):
self.map_widget.set_address(self.entry.get())
def set_marker_event(self):
current_position = self.map_widget.get_position()
self.marker_list.append(self.map_widget.set_marker(current_position[0], current_position[1]))
def clear_marker_event(self):
for marker in self.marker_list:
marker.delete()
def change_appearance_mode(self, new_appearance_mode: str):
customtkinter.set_appearance_mode(new_appearance_mode)
def change_map(self, new_map: str):
if new_map == "OpenStreetMap":
self.map_widget.set_tile_server("https://a.tile.openstreetmap.org/{z}/{x}/{y}.png")
elif new_map == "Google normal":
self.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":
self.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)
def on_closing(self, event=0):
self.destroy()
def start(self):
self.mainloop()
if __name__ == "__main__":
app = App()
app.start()
Mein Error:
Code: Alles auswählen
Traceback (most recent call last):
File "/usr/lib/python3.9/tkinter/__init__.py", line 1892, in __call__
return self.func(*args)
File "/usr/lib/python3.9/tkinter/__init__.py", line 814, in callit
func(*args)
File "/home/peerpri07/.local/lib/python3.9/site-packages/tkintermapview/map_widget.py", line 573, in update_canvas_tile_images
canvas_tile.set_image(image)
File "/home/peerpri07/.local/lib/python3.9/site-packages/tkintermapview/canvas_tile.py", line 33, in set_image
self.draw(image_update=True)
File "/home/peerpri07/.local/lib/python3.9/site-packages/tkintermapview/canvas_tile.py", line 59, in draw
self.canvas_object = self.map_widget.canvas.create_image(canvas_pos_x,
File "/usr/lib/python3.9/tkinter/__init__.py", line 2790, in create_image
return self._create('image', args, kw)
File "/usr/lib/python3.9/tkinter/__init__.py", line 2776, in _create
return self.tk.getint(self.tk.call(
_tkinter.TclError: image "pyimage18" doesn't exist
Wie kann ich das beheben, wenn ich das Programm nicht als
Code: Alles auswählen
def
Danke
