Bản đồ GUI Python

Trong phần này, chúng ta sẽ nói về hàm Python Tkinter Map[]. Blog này sẽ cho bạn biết cách sử dụng map[] trong Python Tkinter

Bản đồ Python Tkinter[]

Hàm Python Tkinter map[] có hai đối số, thứ nhất là tên hàm và thứ hai là các lần lặp. Iterables là danh sách các mục mà chức năng sẽ được áp dụng. Bản đồ áp dụng chức năng đã cho trên tất cả các mục trong danh sách từng mục một

cú pháp

 map[func, *iterables]

Mã số

Đây là việc thực hiện các chức năng bản đồ

Trong mã này, người dùng có thể nhập nhiều mức lương. Mỗi khi anh ấy nhập lương và nhấp vào nút thêm. Lương được thêm vào danh sách. Người dùng cần cung cấp tỷ lệ phần trăm thẩm định. Nhấp vào ứng tuyển sẽ hiển thị mức lương tăng thêm mới

from tkinter import *

sal = []

# function

def mapfunction[]:
    res = [list[map[apply, sal]]] 
    items_lb.config[text=f'{res}']

def apply[n]:
    percentage = int[hike_tf.get[]]/100
    n = n + n * percentage
    return n

def clear[]:
    sal_tf.delete[0, END]
    hike_tf.delete[0, END]
    items_lb.config[text='']
    sal.clear[]

def addtolist[]:
    temp = int[sal_tf.get[]]
    sal.append[temp]
    items_lb.config[text=f'{sal}']
    sal_tf.delete[0, END]


f = ['Times bold', 14]    

ws = Tk[]
ws.title['PythonGuides']
ws.geometry['400x300']
ws.config[bg='#2E7175']

# Frame Widget
frame = Frame[
    ws,
    bg='#2E7175'
    ]
frame.place[relx=0.5, rely=0.5, anchor=CENTER ]

inside_frame = Frame[
    frame
]
inside_frame.grid[row=1, columnspan=3]


# Label Widget
sal_lb = Label[
    frame, 
    text="Salary",
    font=f,
    bg='#2E7175',
    padx=10
    ]
sal_lb.grid[row=0, column=0]

hike_lb = Label[
    frame, 
    text="Hike[%]",
    font=f,
    bg='#2E7175',
    ]
hike_lb.grid[row=2, column=0]

items_lb = Label[
    frame,
    text='',
    bg='#2E7175',
    font=f,
    ]
items_lb.grid[row=1, column=0, columnspan=3, pady=30]


# Entry Widget
sal_tf = Entry[frame]
sal_tf.grid[row=0, column=1]

hike_tf = Entry[frame]
hike_tf.grid[row=2, column=1]

# Button widget
add_btn = Button[
    frame,
    text="Add",
    padx=10,
    command=addtolist
]
add_btn.grid[row=0, column=2, padx=10]

apply_btn = Button[
    frame, 
    text="Apply", 
    padx=10, 
    pady=5,
    command=mapfunction
    ]
apply_btn.grid[row=4, column=0, pady=30]

clear_btn = Button[
    frame, 
    text="Clear", 
    padx=10, 
    pady=5,
    command=clear
    ]
clear_btn.grid[row=4, column=1, pady=30]

exit_btn = Button[
    frame, 
    text="Exit", 
    padx=10, 
    pady=5,
    command=lambda:ws.destroy[]
    ]
exit_btn.grid[row=4, column=2, pady=30]

ws.mainloop[]

đầu ra

Trong đầu ra này, người dùng đã nhập hai mức lương và cung cấp mức tăng 5 phần trăm cho mỗi. Hàm bản đồ lấy một hàm được tạo để tăng dần và áp dụng cho hai mức lương này như bạn có thể thấy trong hình thứ hai

Hàm Python Tkinter Map[]

Bạn có thể thích các hướng dẫn Python tkinter sau đây

  • Cách tạo Bộ chọn ngày giờ bằng Python Tkinter
  • Cách chuyển sang trang tiếp theo trong Chương trình Python Tkinter
  • Cách đọc tệp văn bản bằng Python Tkinter
  • Cách lấy đầu vào của người dùng và lưu trữ trong biến bằng Python Tkinter
  • Chương trình thoát Python Tkinter
  • Tải lên một tệp trong Python Tkinter
  • Tạo tài liệu Word trong Python Tkinter

Trong phần này, chúng ta đã học cách sử dụng hàm map[] trong Python Tkinter

Bijay Kumar

Python là một trong những ngôn ngữ phổ biến nhất ở Hoa Kỳ. Tôi đã làm việc với Python trong một thời gian dài và tôi có kinh nghiệm làm việc với nhiều thư viện khác nhau trên Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn, v.v… Tôi có kinh nghiệm làm việc với nhiều khách hàng khác nhau . Kiểm tra hồ sơ của tôi

Có hai gói Python tuyệt vời để tạo bản đồ tương tác. tán lá và mapboxgl. Cả hai gói này đều được xây dựng dựa trên thư viện JavaScript có tên là tờ rơi. js

Bài học này sẽ tập trung vào folium, đã tồn tại lâu hơn mapboxgl và do đó, được cộng đồng Python ghi lại đầy đủ

Một điểm khác biệt chính giữa hai gói là mapboxgl yêu cầu Mã thông báo truy cập MapBox. Nếu bạn muốn tự mình khám phá mapboxgl, hãy lưu ý rằng mã thông báo Truy cập MapBox được sử dụng miễn phí nhưng yêu cầu tạo tài khoản với MapBox

Bạn có thể tìm thêm thông tin trên trang Github cho gói này

API là gì?

API [hoặc giao diện lập trình ứng dụng] là giao diện mở hệ thống dựa trên máy tính cho các yêu cầu bên ngoài và đơn giản hóa các tác vụ nhất định, chẳng hạn như trích xuất các tập hợp con dữ liệu từ kho lưu trữ hoặc cơ sở dữ liệu lớn

Ví dụ: API dựa trên web cho phép bạn truy cập dữ liệu có sẵn bằng giao diện dựa trên web tách biệt với API mà bạn đang truy cập. Do đó, API web là một cách để tránh các giao diện trực quan không liên quan mà bạn không cần và đưa dữ liệu mong muốn vào công cụ mà bạn muốn sử dụng

Thông thường, bạn truy cập dữ liệu từ các API dựa trên web bằng cách sử dụng URL chứa các bộ tham số chỉ định loại và tập hợp con cụ thể của dữ liệu mà bạn quan tâm. Bạn sẽ tìm hiểu thêm về cách sử dụng API sau trong khóa học này

Đối với bài học này, bạn chỉ cần biết rằng các bản đồ cơ sở mà bạn sẽ truy cập để tạo bản đồ tương tác của mình đến từ các API được cung cấp bởi các tổ chức khác nhau như OpenStreetMap, MapBox, Stamen, Google, v.v.

# Import necessary packages
import os 
import folium
from folium import plugins
import rioxarray as rxr
import earthpy as et
import earthpy.spatial as es

# Import data from EarthPy
data = et.data.get_data['colorado-flood']

# Set working directory to earth-analytics
os.chdir[os.path.join[et.io.HOME, 'earth-analytics', 'data']]

Bản đồ cơ sở đơn giản

Bạn có thể tạo bản đồ tương tác với folium chỉ bằng một dòng mã

Bạn có thể sử dụng hàm Map[] từ folium và cung cấp kinh độ và vĩ độ để căn giữa bản đồ. Bản đồ được tạo bằng bản đồ cơ sở mặc định từ OpenStreetMap

# Create a map using the Map[] function and the coordinates for Boulder, CO
m = folium.Map[location=[40.0150, -105.2705]]

# Display the map
m

Thay đổi bản đồ cơ sở

Bạn có thể thay đổi bản đồ nền cho bản đồ bằng cách cung cấp giá trị cho tham số tiles của hàm Map[]

Có nhiều lựa chọn khác nhau bao gồm Stamen Terrain,

# Create a map using the Map[] function and the coordinates for Boulder, CO
m = folium.Map[location=[40.0150, -105.2705]]

# Display the map
m
0 và
# Create a map using the Map[] function and the coordinates for Boulder, CO
m = folium.Map[location=[40.0150, -105.2705]]

# Display the map
m
1. Thêm chi tiết và tên bản đồ cơ sở có sẵn trên hàm Map[]

# Create a map using Stamen Terrain as the basemap
m = folium.Map[location=[40.0150, -105.2705],
               tiles = 'Stamen Terrain']

# Display map
m

Thêm điểm đánh dấu

Bạn cũng có thể thêm các điểm đánh dấu để gắn nhãn các điểm cụ thể trên bản đồ nền folium, chẳng hạn như các tọa độ đang được sử dụng để căn giữa bản đồ. Bạn thậm chí có thể thêm nhãn bật lên cho điểm đánh dấu được kích hoạt khi bạn nhấp vào nó

# Create a map using Stamen Terrain, centered on Boulder, CO
m = folium.Map[location=[40.0150, -105.2705], 
               tiles = 'Stamen Terrain']

# Add marker for Boulder, CO
folium.Marker[
    location=[40.009515, -105.242714], # coordinates for the marker [Earth Lab at CU Boulder]
    popup='Earth Lab at CU Boulder', # pop-up label for the marker
    icon=folium.Icon[]
].add_to[m]

# Display m
m

Lớp phủ raster trên bản đồ tương tác

Bạn cũng có thể phủ các trình quét trên bản đồ nền folium

Hệ tọa độ và phép chiếu mặc định cho các bản đồ nền dựa trên web là WGS84 Web Mercator. Để tạo lớp phủ dữ liệu trên bản đồ nền dựa trên web, dữ liệu lớp phủ cần phải ở trong hệ tọa độ WGS84 [xem liên kết này để biết thêm thông tin về hệ tọa độ này]

Do đó, để phủ một raster lên sơ đồ cơ sở, trước tiên bạn cần chiếu raster lên WGS84 [EPSG 4326]

Raster dự án

Bạn có thể sử dụng gói rioxarray mà bạn đã nhập dưới dạng rxr để chiếu raster. Trong ví dụ này, bạn sẽ sử dụng raster cho mô hình địa hình kỹ thuật số sau lũ lụt [DTM] ở khu vực Tây Bắc Boulder.

# Create a map using the Map[] function and the coordinates for Boulder, CO
m = folium.Map[location=[40.0150, -105.2705]]

# Display the map
m
3

Chuẩn bị Raster để vẽ sơ đồ

Folium rất mạnh, nhưng bạn vẫn cần chuẩn bị raster trước khi vẽ đồ thị

Điều đầu tiên bạn phải làm là thay thế tất cả các giá trị

# Create a map using the Map[] function and the coordinates for Boulder, CO
m = folium.Map[location=[40.0150, -105.2705]]

# Display the map
m
4 mà rioxarray đã sử dụng để che đi những vùng không có dữ liệu. Những giá trị này không hoạt động với folium. Trong trường hợp này, bạn có thể thay thế các giá trị đó bằng giá trị tối thiểu trong hình ảnh, nhưng bạn có thể thay thế chúng bằng bất kỳ giá trị nào bạn thấy phù hợp để trực quan hóa tốt nhất dữ liệu của mình

Điều tiếp theo chúng ta phải làm là chia tỷ lệ dữ liệu chỉ chứa các giá trị từ 0 đến 255. Điều này làm cho dữ liệu thuộc loại

# Create a map using the Map[] function and the coordinates for Boulder, CO
m = folium.Map[location=[40.0150, -105.2705]]

# Display the map
m
5, cần thiết để vẽ biểu đồ chính xác trong lá. May mắn thay, earthpy có một chức năng để làm điều này. Bạn có thể đặt mảng vào
# Create a map using the Map[] function and the coordinates for Boulder, CO
m = folium.Map[location=[40.0150, -105.2705]]

# Display the map
m
6 và nó sẽ lấy các giá trị và chia tỷ lệ từ 0 đến 255 cho bạn

# Create a variable for destination coordinate system 
dst_crs = 'EPSG:4326' 

# Path to raster
in_path = os.path.join["colorado-flood", 
                       "spatial", 
                       "boulder-leehill-rd", 
                       "post-flood", 
                       "lidar", 
                       "post_DTM.tif"]

# Open the raster in rioxarray
img = rxr.open_rasterio[in_path, masked=True]

# Reproject the raster to be the correct crs
img = img.rio.reproject[dst_crs]

# Replace all null values with the minimum value in the array
img_plot = img.where[~img.isnull[], img.min[]]

# Scale the array from 0 to 255
scaled_img = es.bytescale[img_plot.values[0]]

Raster lớp phủ

Giờ đây, raster nằm trong hệ tọa độ chính xác [WGS84], bạn có thể phủ nó lên basemp bằng cách sử dụng hàm

# Create a map using the Map[] function and the coordinates for Boulder, CO
m = folium.Map[location=[40.0150, -105.2705]]

# Display the map
m
7 và chỉ định hình ảnh [e. g.
# Create a map using the Map[] function and the coordinates for Boulder, CO
m = folium.Map[location=[40.0150, -105.2705]]

# Display the map
m
8] và đặt độ mờ và hộp giới hạn, nếu muốn

Có GUI cho tkinter không?

Yếu tố nền tảng của GUI Tkinter là cửa sổ . Windows là nơi chứa tất cả các thành phần GUI khác sống. Các phần tử GUI khác này, chẳng hạn như hộp văn bản, nhãn và nút, được gọi là tiện ích con. Widget được chứa bên trong cửa sổ.

Làm cách nào để tạo bản đồ web bằng Python?

Cách tạo Bản đồ web bằng Tờ rơi và Python .
Bước 1. Tạo thư mục dự án tại vị trí bạn chọn
Bước 2. Tạo các tệp dự án bên trong thư mục. .
Bước 3. Tạo một mẫu html đơn giản. .
Bước 4. Tạo một Máy chủ Web cho ứng dụng của chúng tôi. .
Bước 5. Tạo Trình xử lý yêu cầu cho máy chủ của chúng tôi

Bạn có thể tạo guis bằng Python không?

Việc tạo giao diện người dùng đồ họa [GUI] đơn giản hoạt động trên nhiều nền tảng có thể phức tạp. Nhưng không nhất thiết phải như vậy. Bạn có thể sử dụng Python và gói PySimpleGUI để tạo giao diện người dùng đẹp mắt mà bạn và người dùng của bạn sẽ thích.

Làm cách nào để tạo một thanh trượt trong Python?

Thanh trượt được tạo bằng phương thức Scale[] . Sử dụng tiện ích Tỷ lệ sẽ tạo một đối tượng đồ họa, cho phép người dùng chọn một giá trị số bằng cách di chuyển một núm dọc theo tỷ lệ của một phạm vi giá trị. Các giá trị tối thiểu và tối đa có thể được đặt làm tham số, cũng như độ phân giải.

Chủ Đề