Mengkodekan aplikasi cat Anda sendiri adalah latihan klasik yang akan mengajarkan Anda banyak hal tentang pemrograman GUI.
Alat melukis sederhana adalah salah satu aplikasi paling umum yang dapat Anda temukan di sebagian besar komputer. Ini memungkinkan seniman membuat kesalahan tanpa rasa takut, memilih warna apa pun hanya dengan mengklik tombol, dan mengubah ukuran sapuan kuas secara instan. Anda dapat menggunakannya untuk membuat logo merek, membuat konsep antarmuka pengguna, dan membuat anotasi diagram.
Jadi, bagaimana cara membuat aplikasi paint?
Modul Tkinter dan Bantal
Untuk membangun aplikasi paint, Anda memerlukan modul Tkinter dan Pillow. Tkinter adalah salah satunya kerangka kerja Python teratas yang dapat Anda gunakan untuk menyesuaikan GUI Anda. Ini adalah modul GUI Python standar untuk membuat aplikasi desktop. Tkinter hadir dengan berbagai widget seperti label, entri, kanvas, dan tombol.
Pillow, cabang dari Python Imaging Library (PIL), adalah modul pemrosesan gambar untuk Python. Dengan Pillow, Anda dapat membuka, mengubah ukuran, membalik, dan memotong gambar. Kamu bisa
mengkonversi format file, membangun aplikasi pencari resep, dan mengambil gambar acak.Untuk menginstal modul ini, jalankan:
pip install tk pillow
Tentukan Struktur Aplikasi Cat
Anda dapat menemukan seluruh kode sumber untuk proyek ini di sini Repositori GitHub.
Mulailah dengan mengimpor modul yang diperlukan. Tentukan kelas, Aplikasi Menggambar. Atur judul, warna penunjuk, dan warna penghapus. Jadikan aplikasi terbuka dalam layar penuh. Hubungi setup_widget metode.
import tkinter as tk
from tkinter.ttk import Scale
from tkinter import colorchooser, filedialog, messagebox
import PIL.ImageGrab as ImageGrab
classDrawApp:
def__init__(self, root):
self.root = root
self.root.title("Kids' Paint App")
self.root.attributes("-fullscreen", True)
self.pointer = "black"
self.erase = "white"
self.setup_widgets()
Tentukan metode yang disebut setup_widget. Tentukan label yang menampilkan judul. Atur elemen induk, teks yang ingin Anda tampilkan, gaya font, warna latar belakang, dan warna teks. Tentukan bingkai untuk palet warna. Atur elemen induk, teks yang akan ditampilkan, gaya font, dan lebar batas. Atur batas agar memiliki tampilan seperti punggung bukit dan warna latar belakang menjadi putih.
defsetup_widgets(self):
self.title_label = tk.Label(
self.root,
text="Kids' Paint App",
font=("Comic Sans MS", 30),
bg="lightblue",
fg="purple",
)
self.title_label.pack(fill=tk.X, pady=10)
self.color_frame = tk.LabelFrame(
self.root,
text="Colors",
font=("Comic Sans MS", 15),
bd=5,
relief=tk.RIDGE,
bg="white",
)
self.color_frame.place(x=10, y=80, width=90, height=180)
Tentukan kumpulan warna untuk palet warna dalam daftar. Ulangi dan buat tombol untuk masing-masingnya. Atur elemen induk, warna latar belakang, lebar tepi, dan tampilan. Atur juga lebar dan perintah yang harus dijalankan setiap tombol saat diklik. Atur semua elemen dengan padding yang sesuai dan warna dalam dua set.
colors = [
"blue",
"red",
"green",
"orange",
"violet",
"black",
"yellow",
"purple",
"pink",
"gold",
"brown",
"indigo",
]
i, j = 0, 0
for color in colors:
tk.Button(
self.color_frame,
bg=color,
bd=2,
relief=tk.RIDGE,
width=3,
command=lambda col=color: self.select_color(col),
).grid(row=i, column=j, padx=2, pady=2)
i += 1
if i == 4:
i = 0
j = 1
Demikian pula, tentukan tombol untuk penghapus, satu untuk menghapus layar, dan satu lagi untuk menyimpan gambar.
self.eraser_btn = tk.Button(
self.root,
text="Eraser",
bd=4,
bg="white",
command=self.eraser,
width=9,
relief=tk.RIDGE,
font=("Comic Sans MS", 12),
)
self.eraser_btn.place(x=10, y=310)
self.clear_screen_btn = tk.Button(
self.root,
text="Clear Screen",
bd=4,
bg="white",
command=self.clear_screen,
width=12,
relief=tk.RIDGE,
font=("Comic Sans MS", 12),
)
self.clear_screen_btn.place(x=10, y=370)
self.save_as_btn = tk.Button(
self.root,
text="Save Drawing",
bd=4,
bg="white",
command=self.save_as,
width=12,
relief=tk.RIDGE,
font=("Comic Sans MS", 12),
)
self.save_as_btn.place(x=10, y=430)
self.bg_btn = tk.Button(
self.root,
text="Background",
bd=4,
bg="white",
command=self.canvas_color,
width=12,
relief=tk.RIDGE,
font=("Comic Sans MS", 12),
)
self.bg_btn.place(x=10, y=490)
self.pointer_frame = tk.LabelFrame(
self.root,
text="Size",
bd=5,
bg="white",
font=("Comic Sans MS", 15, "bold"),
relief=tk.RIDGE,
)
Tentukan widget skala untuk menambah atau mengurangi ukuran penunjuk atau penghapus. Atur elemen induk, orientasi, rentang, dan panjang dalam piksel. Tentukan kanvas dan atur elemen induk, warna latar belakang, dan lebar batas. Atur juga reliefnya agar terlihat beralur sesuai dengan tinggi dan lebarnya.
Posisikan kanvas dengan koordinat yang sesuai dan atur jangkar ke arah Barat Laut (kiri atas). Ikat B1-Gerakan ke fungsi cat. B1 mengacu pada tombol kiri mouse yang ditekan dan Gerakan merujuk pada gerakan tersebut. Secara keseluruhan, Anda menggunakannya untuk melacak pergerakan mouse saat Anda menekan tombol kiri.
self.pointer_frame.place(x=10, y=580, height=150, width=70)
self.pointer_size = Scale(
self.pointer_frame, orient=tk.VERTICAL, from_=48, to=1, length=120
)
self.pointer_size.set(1)
self.pointer_size.grid(row=0, column=1, padx=15)
self.canvas = tk.Canvas(
self.root, bg="white", bd=5, relief=tk.GROOVE, height=650, width=1300
)
self.canvas.place(x=160, y=120, anchor="nw")
self.canvas.bind("" , self.paint)
Tentukan Fitur Aplikasi Paint
Tentukan metode, cat. Untuk melukis, aplikasi akan terus menggambar oval kecil. Kurangi 2 dari X Dan kamu koordinat kejadian mouse untuk menentukan pojok kiri atas oval. Tambahkan 2 untuk menentukan sudut kanan bawah oval. Buat oval menggunakan koordinat pembatas ini.
Atur warna isian, warna garis luar, dan lebar sesuai pilihan penunjuk.
defpaint(self, event):
x1, y1 = (event.x - 2), (event.y - 2)
x2, y2 = (event.x + 2), (event.y + 2)
self.canvas.create_oval(
x1,
y1,
x2,
y2,
fill=self.pointer,
outline=self.pointer,
width=self.pointer_size.get(),
)
Tentukan tiga fungsi, pilih_warna, penghapus, Dan, layar_jernih. Itu pilih_warna metode mengambil warna dan mengatur penunjuknya sesuai. Itu penghapus metode menyetel penunjuk agar memiliki efek seperti penghapus dan membuatnya menggambar garis transparan. Itu layar_jernih metode menghapus semua item di kanvas.
defselect_color(self, col):
self.pointer = coldeferaser(self):
self.pointer = self.erase
defclear_screen(self):
self.canvas.delete("all")
Tentukan metode, kanvas_warna. Buka pemilih warna dengan semua warna berbeda. Kembalikan Tuple yang berisi warna di dalamnya RGB format dan format heksadesimal. Jika pengguna memilih warna, gunakan konfigurasikan metode untuk mengatur warna latar belakang. Atur warna penghapus agar sama dengan warna latar belakang.
defcanvas_color(self):
color = colorchooser.askcolor()
if color:
self.canvas.configure(background=color[1])
self.erase = color[1]
Tentukan metode, simpan_as. Buka kotak dialog file yang meminta pengguna untuk memilih nama dan jalur file. Jika pengguna memilih jalur, gunakan Pillow's Ambil Gambar kelas untuk menangkap seluruh layar. Pangkas gambar menggunakan koordinat yang ditentukan untuk mendapatkan wilayah kanvas. Bereksperimenlah dengan koordinat untuk mengambil bagian yang diinginkan.
Simpan hasil ini ke jalur file yang diinginkan. Menampilkan kotak pesan yang menginformasikan pengguna bahwa program telah berhasil menyimpan cat sebagai gambar. Jika terjadi kesalahan, ini akan menampilkan kesalahan yang sesuai.
defsave_as(self):
file_path = filedialog.asksaveasfilename(
defaultextension=".jpg", filetypes=[("Image files", "*.jpg")]
)
if file_path:
try:
y = 148
x = 200
y1 = 978
x1 = 1840
ImageGrab.grab().crop((x, y, x1, y1)).save(file_path)
messagebox.showinfo("Save Drawing", "Image file saved successfully!")
except Exception as e:
messagebox.showerror("Error", f"Failed to save the image file: {e}")
Buat sebuah instance dari karena dan itu Aplikasi Menggambar kelas. Itu loop utama() fungsi memberitahu Python untuk menjalankan loop acara Tkinter dan mendengarkan acara sampai Anda menutup jendela.
if __name__ == "__main__":
root = tk.Tk()
app = DrawApp(root)
root.mainloop()
Menguji Berbagai Fitur Lukisan Menggunakan Python
Saat Anda menjalankan program melukis, Anda akan melihat aplikasi dengan palet warna, empat tombol, satu penggeser, dan kanvas untuk melukis:
Klik warna apa saja untuk memilihnya. Anda kemudian dapat menggambar di kanvas dengan warna tersebut dengan tombol kiri mouse:
Saat mengklik Penghapus tombol dan menyeret penggeser secara vertikal ke atas, Anda akan memilih penghapus dan memperbesar ukurannya. Uji penghapus dengan menyeretnya ke atas gambar Anda untuk menghapus goresannya.
Ketika Anda mengklik Hapus Layar tombol, program akan menghapus gambar Anda sebelumnya. Klik Latar belakang tombol untuk membuka palet warna dan menggunakannya untuk mengubah warna latar belakang.
Saat mengklik Simpan Gambar tombol, kotak dialog file terbuka. Pilih jalur dan nama file, dan program akan menyimpannya.
Meningkatkan Aplikasi Cat
Anda dapat meningkatkan fungsionalitas aplikasi cat dengan menambahkan opsi untuk menambahkan bentuk. Anda dapat memberikan pilihan untuk memilih jenis kuas dan opacity. Tambahkan opsi untuk menambahkan teks dan stiker. Tambahkan opsi untuk membatalkan, mengulang, mengubah ukuran, dan membalik gambar. Ini akan membuat proses menggambar lebih lancar.
Untuk membuat bentuk, Anda dapat menggunakan metode seperti create_rectangle, create_oval, create_line, dan create_polygon. Untuk menambahkan teks dan gambar, gunakan metode create_text dan create_image. Untuk mengubah ukuran dan membalik gambar, Anda dapat menggunakan metode pengubahan ukuran dan transposisi Pillow.