şuan aklıma gelmiyor ama bir insanın pip yerine seninikimi kullanmasını sağlıyacak bir albenisi olması lazım mesela modülün açıklamasını versin
İndirdiği modülün ne işe yaradığı gibi bilgilermi biraz açıklarmısın
Info tuşu hazırlayabilirsiniz
Benim dediğim gibi işte, PyPi’den bilgi çekicek modülle alakalı.
Peki bilgiyi PyPi ’ den requests ve BeautifulSoup ile çektim ama bunu kullanıcıya nasıl göstereyim.Yani açılan bir text dosyası ile ya da tkinter messagbox şeklinde gibi birşey ilemi göstereyim ?
İstediğiniz gibi gösterin. Bunun için yeni bir pencere açmak gereksiz bence, zaten bütün yazıyı değil kısa bir bölümünü gösterirsiniz.
Peki requests ve BeautifulSoup kullanayımmı yoksa başka modüller kullanılabilirmi ?
requests ve Beautiful soup ile yapacaksam bir örnek paylaşırmısınız yol gösterme açısından
Veriyi aldım ve şimdi Text widgetin içine yazmak istiyorum fakat sadece son cümleyi yazıyor
kod:
widget.insert("1.0","Done\n{}\n".format(url))
yeni = tk.Tk()
yeni.title("İnfo")
yeni.geometry("300x300")
yeni.resizable(False,False)
hello = tk.Text(yeni,height=30,width=30,fg="RED",bg="BLACK")
hello.place(x=0,y=0)
hello.config(state="normal")
hello.insert("1.0",strings)
stings yazı bölümü
import tkinter as tk,tkinter.messagebox
import os,sys
import requests
from bs4 import BeautifulSoup
import smtplib
def Email():
root = tk.Tk()
root.geometry("300x300")
root.title("E-Mail")
root.resizable(False,False)
root.configure(background="GREY")
root.mainloop()
def remove():
data1 = değer1.get()
try:
__import__(data1)
except ModuleNotFoundError:
widget.insert("1.0","Bu modül\nyüklü bile değil\n")
except ValueError:
widget.insert("1.0","Havayı silemem\n")
else:
widget.insert("1.0","Silinen Paketler\ngeri gelmez\nTekrar yüklemeniz gerekir\n")
tkinter.messagebox.showwarning("Paket Sil","{} Paketini silmek istiyormusun ?".format(data1))
def info():
data1 = değer1.get()
url = ("https://pypi.org/project/{}/").format(data1)
try:
r = requests.get(url)
soup = BeautifulSoup(r.text,'html.parser')
for tag in soup.find_all('p'):
strings = "".join(line.strip() for line in str(tag.string).split("\n"))
if strings != "None":
print(strings)
except requests.exceptions.ConnectionError:
widget.insert("1.0","Bağlantı yok\n")
else:
if data1 == "":
widget.insert("1.0","Kütüphane adı boş kalamaz\n")
else:
widget.insert("1.0","Done\n{}\n".format(url))
dosya = open("{}.txt".format(data1),"a")
dosya.write(strings)
widget.insert("1.0","Modül hakkında Bilgiye\n{}.txt dosyasından\nulaşabilirsiniz\n".format(data1))
def upgrade():
os.system("pip3 install --upgrade pip")
widget.insert("1.0","Pip güngellendi\n")
def indir():
rand = ["2","3"]
data1 = değer1.get()
data2 = değer2.get()
if data2 == "":
widget.insert("1.0","Sürüm boş kalamaz\n")
elif data1 == "":
widget.insert("1.0","Kütüphane adı boş kalamaz\n")
elif data2 not in rand:
widget.insert("1.0","Lütfen Default Kısma\n(3 veya 2) girin\n")
else:
try:
__import__(data1)
except ModuleNotFoundError:
os.system("pip{} install {}".format(data2,data1))
try:
__import__(data1)
except ModuleNotFoundError:
widget.insert("1.0","Adı {} olan bir modül\nyok !\n".format(data1))
except ConnectionError:
widget.insert("1.0","Bağlantı yok")
else:
widget.insert("1.0","Modül Başarıyla İndirildi\nBilgi al butonuna tıklayarak\nbilgi alabilirsiniz")
else:
widget.insert("1.0","Bu modül zaten yüklü\n")
pencere = tk.Tk()
pencere.geometry("380x320")
pencere.title("Paket Yükleyici v0.1")
pencere.resizable(False,False)
pencere.configure(background="GREY")
değer1 = tk.Entry(font="Verdana 13",fg="AQUA",bg="GREY")
değer1.place(x=20,y=20)
değer2 = tk.Entry(font="Verdana 13",fg="BROWN",bg="GREY")
değer2.place(x=20,y=60)
değer2.insert(0,"3")
buton1 = tk.Button(text="İndir",fg="GREEN",bg="BLACK",font="Verdana 15",command=indir)
buton1.place(x=20,y=110)
buton2 = tk.Button(text="İptal Et",fg="RED",bg="BLACK",font="Verdana 15",command=sys.exit)
buton2.place(x=20,y=160)
buton3 = tk.Button(text="Pip Güncelle",fg="BLUE",bg="BLACK",font="Verdana 14",command=upgrade)
buton3.place(x=20,y=210)
buton4 = tk.Button(text="Paket Kaldır",font="Verdana 14",fg="AQUA",bg="BROWN",command=remove)
buton4.place(x=20,y=260)
lamel1 = tk.Label(text="Kütüphane Adı",fg="RED",bg="GREY")
lamel1.place(x=250,y=25)
lamel2 = tk.Label(text="Python sürümü",fg="GREEN",bg="GREY")
lamel2.place(x=250,y=65)
widget = tk.Text(height=10,width=30,fg="RED",bg="BLACK")
widget.place(x=165,y=165)
widget.config(state="normal")
wormer = tk.Menu(pencere)
wormer.add_command(label="E-Mail Gönder",font="Times 12",foreground="BLACK",command=Email)
wormer.add_command(label="Bilgi al",font="Times 12",foreground="Black",command=info)
pencere.config(menu=wormer)
pencere.mainloop()
toolbar ve massagebox ekledim ama modül bilgisini txt dosyasına yazdıramıyorum
Birincisi, else
, try except
deyimine ait bir ifade değil.
info
fonksiyonunu da şu şekilde değiştirin:
def info():
data1 = değer1.get()
url = ("https://pypi.org/project/{}/").format(data1)
try:
r = requests.get(url)
soup = BeautifulSoup(r.text,'html.parser')
strings = ""
for tag in soup.find_all('p'):
s = "".join(line.strip() for line in str(tag.string).split("\n"))
if s != "None":
strings += s + "\n"
except requests.exceptions.ConnectionError:
widget.insert("1.0","Bağlantı yok\n")
if data1 == "":
widget.insert("1.0","Kütüphane adı boş kalamaz\n")
else:
widget.insert("1.0","Done\n{}\n".format(url))
dosya = open("{}.txt".format(data1),"a")
dosya.write(strings)
widget.insert("1.0","Modül hakkında Bilgiye\n{}.txt dosyasından\nulaşabilirsiniz\n".format(data1))
Orada da var, hata verilmezse çalışıyor.
Karşılaştığım kodlarda hiç denk gelmedim. Kendim de hiç bu şekilde kullanmadım. Ama kullanımı varmış.
try,except,else ve finally hepsi try içinde değilmi ?
Hepsi try
içinde derken?
try ile uyumlu çalışır demek istedim
else
ifadesi try
except
ifadeleriyle kullanılıyormuş, bilmiyordum.
peki finally ?
o ne oluyor
istisna oluşsa da oluşmasa da sonunda yapılması gereken işlemleri yazdığınız bir ifade o.
Bir modülün pip ile indirilebilmesi için PyPi’de olması lazım zaten.