wmaraci reklam

İki metin arasındaki benzerlik oranını bulan program (Python & Tkinter)

5 Mesajlar 2.985 Okunma
advertseo
wmaraci reklam

Ertug Ertug WM Aracı Kullanıcı
  • Üyelik 21.09.2013
  • Yaş/Cinsiyet 33 / E
  • Meslek Yazılım geliştiricisi
  • Konum Ankara
  • Ad Soyad E** K**
  • Mesajlar 361
  • Beğeniler 51 / 43
  • Ticaret 0, (%0)
Programı Tkinter ile arayüz programlamayı öğrenmek için yazdım. İki Python sürümünde de sorunsuz çalışıyor. Yeni başlayanlara style, grid, text ve progressbar widget'leri ile ilgili fikir vermesi amacıyla paylaşıyorum. Programı SEO amaçlı kullanacak olanlar Linux pakedini indirip herhangi bir kurulum yapmadan çalıştırabilirler.

İndirme linki: Github


#!/usr/bin/env python
# -*- coding: UTF-8 -*-

from __future__ import print_function

import sys
python_version = int(sys.version[0])

if python_version == 2:
import Tkinter as tkinter
import ttk

elif int(sys.version[0]) > 2:
import tkinter
from tkinter import ttk


__author__ = {
'name': 'Ertuğrul',
'mail': 'mail@rastignac.org',
}


import difflib

def get_similarity_ratio(a, b):
similarity = difflib.SequenceMatcher(a = a.lower(), b = b.lower())
return similarity.ratio()


class Application(ttk.Frame):

def __init__(self, parent):
ttk.Frame.__init__(self, parent)
self.parent = parent
self.initUI()

def initUI(self):
self.parent.title('Seqcheck')
self.pack(fill = tkinter.BOTH, expand = 1)

self.rowconfigure(0, weight = 0)
self.columnconfigure(0, weight = 4)
self.rowconfigure(1, weight = 1)
self.columnconfigure(1, weight = 4)
self.rowconfigure(2, weight = 1)
self.columnconfigure(2, weight = 4)

self.style = ttk.Style()
self.style.theme_use('clam')

self.text1_label = ttk.Label(self, text = 'Text 1')
self.text1_label.grid(row = 0, column = 0, pady = 3, padx = 6,
sticky = tkinter.E + tkinter.W + tkinter.S + tkinter.N)

self.text1 = tkinter.Text(self)
self.text1.grid(row = 1, column = 0, columnspan = 4, rowspan = 4, padx = 5,
sticky = tkinter.E + tkinter.W + tkinter.S + tkinter.N)

self.text2_label = ttk.Label(self, text = 'Text 2')
self.text2_label.grid(row = 0, column = 4, pady = 3, padx = 6,
sticky = tkinter.E + tkinter.W + tkinter.S + tkinter.N)

self.text2 = tkinter.Text(self)
self.text2.grid(row = 1, column = 4, columnspan = 4, rowspan = 4,
sticky = tkinter.E + tkinter.W + tkinter.S + tkinter.N)

self.style.configure('TProgressbar', foreground = 'green', background = 'green')
self.similarity_ratio_bar = ttk.Progressbar(self, orient = tkinter.HORIZONTAL, mode = 'indeterminate',
maximum = 100)
self.similarity_ratio_bar.grid(row = 8, column = 4, columnspan = 10, pady = 10,
sticky = tkinter.E + tkinter.W + tkinter.S + tkinter.N)

self.similarity_ratio_label = ttk.Label(self)
self.similarity_ratio_label.grid(row = 9, column = 4, columnspan = 10)

self.check_button = tkinter.Button(self, text = 'Analysis', command = self.check_button_on_click)
self.check_button.grid(row = 8, column = 0, columnspan = 4, pady = 10, padx = 6,
sticky = tkinter.E + tkinter.W + tkinter.S + tkinter.N)

def check_button_on_click(self):
self.show_similarity_ratio()

def show_similarity_ratio(self):
self.similarity_ratio_bar.stop()
seq_ratio = get_similarity_ratio(self.text1.get(0.0, tkinter.END), self.text2.get(0.0, tkinter.END))
print('Sequence ratio: {0}'.format(seq_ratio))
ratio = int((seq_ratio * 100.0) / 1.0)
print('Similarity ratio: {0}'.format(ratio))
if ratio <= 22:
self.style.configure('TProgressbar', foreground = 'green', background = 'green')
elif ratio <= 44:
self.style.configure('TProgressbar', foreground = 'blue', background = 'blue')
elif ratio <= 77:
self.style.configure('TProgressbar', foreground = 'orange', background = 'orange')
elif ratio <= 88:
self.style.configure('TProgressbar', foreground = 'purple', background = 'purple')
else:
self.style.configure('TProgressbar', foreground = 'red', background = 'red')
self.similarity_ratio_bar.step(ratio)
self.similarity_ratio_label['text'] = 'Ratio: {0}%\t\tSequence ratio: {1}'.format(ratio, seq_ratio)


def run():
root = tkinter.Tk()
try:
icon = tkinter.PhotoImage(file = 'icon.png')
# http://www.iconarchive.com/show/robots-icons-by-proycontec/robot-documents-icon.html
root.tk.call('wm', 'iconphoto', root._w, icon)
except:
pass
root.attributes('-zoomed', True)
application = Application(root)
root.mainloop()


if __name__ == '__main__':
run()
tiwaly yakupqqq

kişi bu mesajı beğendi.

[freenodeIRC]
PHP = #laravelTurkiye
C++ = #qtTurkiye
Python = #pythonium
wmaraci
reklam

lordex lordex LO LE Kullanıcı
  • Üyelik 30.01.2014
  • Yaş/Cinsiyet 31 / E
  • Meslek ögrenci
  • Konum İstanbul Anadolu
  • Ad Soyad S** A**
  • Mesajlar 1127
  • Beğeniler 67 / 135
  • Ticaret 14, (%100)
Bir yere kursaydın ordan kullanırdık biz
 

 

Ertug Ertug WM Aracı Kullanıcı
  • Üyelik 21.09.2013
  • Yaş/Cinsiyet 33 / E
  • Meslek Yazılım geliştiricisi
  • Konum Ankara
  • Ad Soyad E** K**
  • Mesajlar 361
  • Beğeniler 51 / 43
  • Ticaret 0, (%0)

lordex adlı üyeden alıntı

Bir yere kursaydın ordan kullanırdık biz


Web yazılımı değil, desktop yazılımıdır.
 

 

[freenodeIRC]
PHP = #laravelTurkiye
C++ = #qtTurkiye
Python = #pythonium

BrutalStar BrutalStar Yazılımcı Kullanıcı
  • Üyelik 26.02.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Yazılımcı
  • Konum İstanbul Avrupa
  • Ad Soyad U** C**
  • Mesajlar 697
  • Beğeniler 149 / 137
  • Ticaret 0, (%0)
Güzel proje hocam ama keşke modül kullanmadan yapsaydınız.
 

 

BLOG | http://safkaninsan.blogspot.com/
wmaraci
wmaraci

Ertug Ertug WM Aracı Kullanıcı
  • Üyelik 21.09.2013
  • Yaş/Cinsiyet 33 / E
  • Meslek Yazılım geliştiricisi
  • Konum Ankara
  • Ad Soyad E** K**
  • Mesajlar 361
  • Beğeniler 51 / 43
  • Ticaret 0, (%0)

BrutalStar adlı üyeden alıntı

Güzel proje hocam ama keşke modül kullanmadan yapsaydınız.


Teşekkür ederim. Ama düzeltme yapayım, bu bir proje değil. Yapmamın amacı dediğim gibi Tkinter modülü ile çalışmayı öğrenmek. Tabii Qt ya da GTK varken Tkinter gereksiz kalıyor biraz. Bu sadece Tkinter üzerine bir göz gezdirmeydi. :)
BrutalStar tiwaly

kişi bu mesajı beğendi.

[freenodeIRC]
PHP = #laravelTurkiye
C++ = #qtTurkiye
Python = #pythonium
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al