Python3 Tkinter: Not Defteri Yapmak, Create a Take Note App

Python 3 ile beraber yüklenen Tkinter modülü ile grafiksel kullanıcı arayüzüne sahip programlar yapabiliriz. Tkinter için Visual Studio gibi arayüzde bulunan araçları sürükleyip bıraktığımız, yerlerini değiştirebildiğimiz bir yapı söz konusu değil. Programdaki araçları kodlarla arayüze getirip istersek kodlarla konumlarını ayarlayabiliriz.



Penceremizi Yaratmak

Pencerimizi görünür kılmak için ilk önce Tkinter' ı uygulamamıza dahil edip daha sonra Tkinter' ın methodlarını ve özelliklerini kullanacağız.
  
from tkinter import *
from tkinter import filedialog
from tkinter import messagebox
import tkinter as tk

pncr = tk.Tk()
pncr.title('Not Defteri')

Yukarıda tkinter' ı ve dosyamızı kaydedip açarken ihtiyacımız olacak filedialog kütüphanesini ve programımızın hakkında yazmak istediklerimizi göstermek için messagebox kütüphanesini çağırdık. Penceremizin başlığını Not Defteri olarak belirledik.

 Arka plan ve Arayüz Araçları

Penceremizin arka planını beyaz renkle boyayıp, penceremizin üstüne bir menübar içerisine dosya ve hakkında isimli iki tane menü butonu ekleyeceğiz.

menubar = Menu(pncr)

filemenu = Menu(menubar, tearoff = 0)
filemenu.add_command(label='Yeni', command=yeni)
filemenu.add_command(label='Aç', command=aç)
filemenu.add_command(label='Kaydet', command=kaydet)
filemenu.add_separator()
filemenu.add_command(label='Çıkış', command=çıkış)
menubar.add_cascade(label='Dosya', menu=filemenu)
menubar.add_command(label='Hakkında', command=hakkında)

textarea = Text(pncr, width=100,height=20)
textarea.pack() 

pncr.configure(background='white')
pncr.config(menu=menubar)
pncr.mainloop()

Dosya butonumuz aslında açılır bir menü ve içerisinde sırasıyla yeni, aç, kaydet ve çıkış adlı 4 tane butonumuz bulunuyor. Dosya açılır menüsünün yanında ise messagebox ile program hakkında kısmını göstereceğimiz hakkında butonu bulunuyor.

Fonksiyonlar

Menübarımızın içindeki butonların tıklandıklarında çalıştıracakları fonksiyonlar ile programımıza can vermiş olacağız.


def çıkış():
    global pncr
    pncr.quit()

def get_textarea_value():
    global textarea
    return textarea.get("1.0", END)

def kaydet():
    global pncr
    data = get_textarea_value()
    f = filedialog.asksaveasfile (mode='w',defaultextension=".txt",filetypes=(("Yazı dosyası", "*.txt"),("Tüm Dosyalar", "*.*")),title='Kaydet',initialdir=pncr.winfo_pathname)
    if f != None:
        f.write(data)
        f.close()
    
def aç():
    global textarea
    f = filedialog.askopenfile(mode='r', defaultextension=".txt",filetypes=(('Yazı Dosyası', '*.txt'), ('Tüm Dosyalar', '*.*')), title='Aç', initialdir=pncr.winfo_pathname)
    if f == None:
        return
    text = f.read()
    if text != None:
        textarea.delete(1.0, END)
        textarea.insert(END, text)

def yeni():
    global textarea 
    textarea.delete(1.0, END)

def hakkında():
    messagebox.showinfo('Hakkında', 'Bu program yazı yazmak, okumak, yazıyı düzenlemek için Kodlardan Bir Blog yazarı Talha Aydın tarafından yazılmıştır')

Programın Son Hali

from tkinter import *
from tkinter import filedialog
from tkinter import messagebox
import tkinter as tk

pncr = tk.Tk()
pncr.title('Not Defteri')

def çıkış():
    global pncr
    pncr.quit()

def get_textarea_value():
    global textarea
    return textarea.get("1.0", END)

def kaydet():
    global pncr
    data = get_textarea_value()
    f = filedialog.asksaveasfile (mode='w',defaultextension=".txt",filetypes=(("Yazı dosyası", "*.txt"),("Tüm Dosyalar", "*.*")),title='Kaydet',initialdir=pncr.winfo_pathname)
    if f != None:
        f.write(data)
        f.close()
    
def aç():
    global textarea
    f = filedialog.askopenfile(mode='r', defaultextension=".txt",filetypes=(('Yazı Dosyası', '*.txt'), ('Tüm Dosyalar', '*.*')), title='Aç', initialdir=pncr.winfo_pathname)
    if f == None:
        return
    text = f.read()
    if text != None:
        textarea.delete(1.0, END)
        textarea.insert(END, text)

def yeni():
    global textarea 
    textarea.delete(1.0, END)

def hakkında():
    messagebox.showinfo('Hakkında', 'Bu program yazı yazmak, okumak, yazıyı düzenlemek için Kodlardan Bir Blog yazarı Talha Aydın tarafından yazılmıştır')

menubar = Menu(pncr)

filemenu = Menu(menubar, tearoff = 0)
filemenu.add_command(label='Yeni', command=yeni)
filemenu.add_command(label='Aç', command=aç)
filemenu.add_command(label='Kaydet', command=kaydet)
filemenu.add_separator()
filemenu.add_command(label='Çıkış', command=çıkış)
menubar.add_cascade(label='Dosya', menu=filemenu)
menubar.add_command(label='Hakkında', command=hakkında)

textarea = Text(pncr, width=100,height=20)
textarea.pack() 

pncr.configure(background='white')
pncr.config(menu=menubar)
pncr.mainloop()

not defteri

Yorum Gönder

0 Yorumlar