init kivy interface
This commit is contained in:
parent
f1dbacc033
commit
85c2f03bac
220
chaineTV.py
220
chaineTV.py
@ -8,14 +8,21 @@ import re
|
|||||||
import io
|
import io
|
||||||
from PIL import ImageTk
|
from PIL import ImageTk
|
||||||
from bs4 import BeautifulSoup
|
from bs4 import BeautifulSoup
|
||||||
from tkinter import Label,Button,Frame,Tk,Entry,StringVar,LEFT,RIGHT,Scrollbar,VERTICAL,Canvas,Y,BOTH,NW
|
from kivy.app import App
|
||||||
|
from kivy.app import ObjectProperty
|
||||||
|
from kivy.uix.widget import Widget
|
||||||
|
from kivy.uix.label import Label
|
||||||
|
from kivy.uix.button import Button
|
||||||
|
from kivy.uix.image import Image
|
||||||
|
from kivy.uix.textinput import TextInput
|
||||||
|
from kivy.uix.boxlayout import BoxLayout
|
||||||
|
from kivy.graphics import Color,Rectangle
|
||||||
|
|
||||||
|
|
||||||
class Labbelink (Label):
|
class Labbelink (Label):
|
||||||
|
|
||||||
def __init__(self,parent,text,link):
|
def __init__(self,parent,text,link):
|
||||||
Label.__init__(self,parent,text=text,fg="blue",cursor="hand2")
|
Label.__init__(self,text=text,fg="blue",cursor="hand2")
|
||||||
self.link=link
|
self.link=link
|
||||||
self.bind("<Button-1>",self._openlink)
|
self.bind("<Button-1>",self._openlink)
|
||||||
|
|
||||||
@ -26,55 +33,16 @@ class LabelImage(Label):
|
|||||||
|
|
||||||
def __init__(self,parent,url):
|
def __init__(self,parent,url):
|
||||||
raw_data = urllib.request.urlopen(url).read()
|
raw_data = urllib.request.urlopen(url).read()
|
||||||
imagetoinsert=ImageTk.PhotoImage(file=io.BytesIO(raw_data))
|
imagetoinsert=Image(file=io.BytesIO(raw_data))
|
||||||
Label.__init__(self,parent,image=imagetoinsert)
|
Label.__init__(self,image=imagetoinsert)
|
||||||
self.image = imagetoinsert
|
self.image = imagetoinsert
|
||||||
|
|
||||||
|
|
||||||
class ScrollableCanvas(Frame):
|
|
||||||
def __init__(self, parent, *args, **kw):
|
|
||||||
Frame.__init__(self, parent, *args, **kw)
|
|
||||||
|
|
||||||
canvas=Canvas(self,width=300,height=300,scrollregion=(0,0,500,500))
|
|
||||||
|
|
||||||
vbar=Scrollbar(self,orient=VERTICAL)
|
|
||||||
vbar.pack(side=RIGHT, fill=Y)
|
|
||||||
vbar.config(command=canvas.yview)
|
|
||||||
|
|
||||||
canvas.config(width=200,height=200)
|
|
||||||
canvas.config(yscrollcommand=vbar.set)
|
|
||||||
canvas.pack(side=LEFT,expand=True,fill=BOTH)
|
|
||||||
|
|
||||||
# create a frame inside the canvas which will be scrolled with it
|
|
||||||
self.interior = interior = Frame(canvas)
|
|
||||||
interior_id = canvas.create_window(0, 0, window=interior, anchor=NW )
|
|
||||||
# track changes to the canvas and frame width and sync them,
|
|
||||||
# also updating the scrollbar
|
|
||||||
def _configure_interior(event):
|
|
||||||
# update the scrollbars to match the size of the inner frame
|
|
||||||
size = (interior.winfo_reqwidth(), interior.winfo_reqheight())
|
|
||||||
canvas.config(scrollregion="0 0 %s %s" % size)
|
|
||||||
canvas.yview_moveto(1)
|
|
||||||
if interior.winfo_reqwidth() != canvas.winfo_width():
|
|
||||||
# update the canvas's width to fit the inner frame
|
|
||||||
canvas.config(width=interior.winfo_reqwidth())
|
|
||||||
interior.bind('<Configure>', _configure_interior)
|
|
||||||
|
|
||||||
def _configure_canvas(event):
|
|
||||||
if interior.winfo_reqwidth() != canvas.winfo_width():
|
|
||||||
# update the inner frame's width to fill the canvas
|
|
||||||
canvas.itemconfigure(interior_id, width=canvas.winfo_width())
|
|
||||||
canvas.bind('<Configure>', _configure_canvas)
|
|
||||||
|
|
||||||
def _MouseWhell(event):
|
|
||||||
canvas.yview_scroll(-1*(event.delta/120), "units")
|
|
||||||
self.bind_all("<MouseWheel>",_MouseWhell)
|
|
||||||
|
|
||||||
|
|
||||||
|
class emmisionGUI(BoxLayout):
|
||||||
class emmisionGUI(Frame):
|
|
||||||
def __init__(self,parent,**kwarg):
|
def __init__(self,parent,**kwarg):
|
||||||
Frame.__init__(self,parent)
|
BoxLayout.__init__(self,parent)
|
||||||
self.image=LabelImage(self,kwarg['img'])
|
self.image=LabelImage(self,kwarg['img'])
|
||||||
self.image.pack()
|
self.image.pack()
|
||||||
self.LabelTitle=Labbelink(self,("emmision ce soir: "+kwarg["title"]),kwarg['href'])
|
self.LabelTitle=Labbelink(self,("emmision ce soir: "+kwarg["title"]),kwarg['href'])
|
||||||
@ -88,83 +56,98 @@ class emmisionGUI(Frame):
|
|||||||
self.LabelSynopsys.pack()
|
self.LabelSynopsys.pack()
|
||||||
|
|
||||||
|
|
||||||
class Interface:
|
class RootWidget(BoxLayout):
|
||||||
|
txt_inpt = ObjectProperty(None)
|
||||||
|
|
||||||
|
|
||||||
|
class InterfaceApp(App):
|
||||||
def __init__(self,data):
|
def __init__(self,data):
|
||||||
self.data = data
|
App.__init__(self)
|
||||||
self.fenetre = Tk()
|
self.data=data
|
||||||
self.fenetre.title("recherche de chaine")
|
def build(self):
|
||||||
self.value = StringVar()
|
return RootWidget()
|
||||||
self.label = Label(self.fenetre, text="entrer numero de chaine")
|
|
||||||
self.entree = Entry(self.fenetre, textvariable=self.value, width=30)
|
|
||||||
self.frame = Frame(self.fenetre)
|
|
||||||
self.resultframe = ScrollableCanvas(self.fenetre)
|
|
||||||
self.bouton_update_base = Button(self.fenetre, text="update la base de chaine", command=self.click_update)
|
|
||||||
self.bouton = Button(self.frame, text="OK", command=self.click)
|
|
||||||
self.reset = Button(self.frame, text="reset", command=self.click_reset)
|
|
||||||
self.label.pack()
|
|
||||||
self.entree.pack()
|
|
||||||
self.entree.focus_set()
|
|
||||||
self.resultframe.pack(expand=1,fill='both')
|
|
||||||
self.frame.pack()
|
|
||||||
self.bouton.pack(side=LEFT)
|
|
||||||
self.reset.pack(side=RIGHT)
|
|
||||||
self.bouton_update_base.pack()
|
|
||||||
self.fenetre.bind("<Key-Return>", self.enter)
|
|
||||||
self.fenetre.bind("<Key-Escape>", self.eventreset)
|
|
||||||
|
|
||||||
|
|
||||||
def enter(self,evt):
|
|
||||||
self.click()
|
|
||||||
|
|
||||||
def eventreset(self,evt):
|
|
||||||
self.click_reset()
|
|
||||||
|
|
||||||
def mainloop(self):
|
|
||||||
self.fenetre.mainloop()
|
|
||||||
|
|
||||||
def click(self):
|
|
||||||
print(self.value.get())
|
|
||||||
Arrayvalue=self.value.get().split(" ")
|
|
||||||
for value in Arrayvalue:
|
|
||||||
|
|
||||||
|
|
||||||
try:
|
#
|
||||||
strlink=geturlprogrammetv(self.data.get_chaine(value))
|
#class Interface:
|
||||||
link= Labbelink(self.resultframe.interior,self.data.get_chaine(value),strlink)
|
#
|
||||||
link.pack()
|
# def __init__(self,data):
|
||||||
self.resultframe.update()
|
# self.data = data
|
||||||
print(self.data.get_chaine(value))
|
# self.fenetre = Tk()
|
||||||
emision=parse_emmission(strlink)
|
# self.fenetre.title("recherche de chaine")
|
||||||
if emision:
|
# self.value = StringVar()
|
||||||
if emision == "can't find show":
|
# self.label = Label(self.fenetre, text="entrer numero de chaine")
|
||||||
Label(self.resultframe.interior,text="impssible de parser cette chaine").pack()
|
# self.entree = Entry(self.fenetre, textvariable=self.value, width=30)
|
||||||
else:
|
# self.frame = Frame(self.fenetre)
|
||||||
emmisionGUI(self.resultframe.interior,**emision).pack()
|
# self.resultframe = ScrollableCanvas(self.fenetre)
|
||||||
else:
|
# self.bouton_update_base = Button(self.fenetre, text="update la base de chaine", command=self.click_update)
|
||||||
Label(self.resultframe.interior,text="pas de connection internet impossible de determiner l'émission du soir").pack()
|
# self.bouton = Button(self.frame, text="OK", command=self.click)
|
||||||
|
# self.reset = Button(self.frame, text="reset", command=self.click_reset)
|
||||||
|
# self.label.pack()
|
||||||
except KeyError:
|
# self.entree.pack()
|
||||||
print("numero de chaine inconnue")
|
# self.entree.focus_set()
|
||||||
unknow=Label(self.resultframe.interior, text="numero de chaine inconnue")
|
# self.resultframe.pack(expand=1,fill='both')
|
||||||
unknow.pack()
|
# self.frame.pack()
|
||||||
|
# self.bouton.pack(side=LEFT)
|
||||||
self.value.set("")
|
# self.reset.pack(side=RIGHT)
|
||||||
|
# self.bouton_update_base.pack()
|
||||||
def click_reset(self):
|
# self.fenetre.bind("<Key-Return>", self.enter)
|
||||||
print("reset")
|
# self.fenetre.bind("<Key-Escape>", self.eventreset)
|
||||||
for child in self.resultframe.interior.winfo_children():
|
#
|
||||||
child.destroy()
|
#
|
||||||
|
# def enter(self,evt):
|
||||||
|
# self.click()
|
||||||
def click_update(self):
|
#
|
||||||
self.data.parsechaine()
|
# def eventreset(self,evt):
|
||||||
labelupdate = Label(self.resultframe.interior, text="update chaine done"+"\r")
|
# self.click_reset()
|
||||||
labelupdate.pack()
|
#
|
||||||
|
# def mainloop(self):
|
||||||
def _openlink(self,link):
|
# self.fenetre.mainloop()
|
||||||
webbrowser.open_new(link)
|
#
|
||||||
|
# def click(self):
|
||||||
|
# print(self.value.get())
|
||||||
|
# Arrayvalue=self.value.get().split(" ")
|
||||||
|
# for value in Arrayvalue:
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# try:
|
||||||
|
# strlink=geturlprogrammetv(self.data.get_chaine(value))
|
||||||
|
# link= Labbelink(self.resultframe.interior,self.data.get_chaine(value),strlink)
|
||||||
|
# link.pack()
|
||||||
|
# self.resultframe.update()
|
||||||
|
# print(self.data.get_chaine(value))
|
||||||
|
# emision=parse_emmission(strlink)
|
||||||
|
# if emision:
|
||||||
|
# if emision == "can't find show":
|
||||||
|
# Label(self.resultframe.interior,text="impssible de parser cette chaine").pack()
|
||||||
|
# else:
|
||||||
|
# emmisionGUI(self.resultframe.interior,**emision).pack()
|
||||||
|
# else:
|
||||||
|
# Label(self.resultframe.interior,text="pas de connection internet impossible de determiner l'émission du soir").pack()
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# except KeyError:
|
||||||
|
# print("numero de chaine inconnue")
|
||||||
|
# unknow=Label(self.resultframe.interior, text="numero de chaine inconnue")
|
||||||
|
# unknow.pack()
|
||||||
|
#
|
||||||
|
# self.value.set("")
|
||||||
|
#
|
||||||
|
# def click_reset(self):
|
||||||
|
# print("reset")
|
||||||
|
# for child in self.resultframe.interior.winfo_children():
|
||||||
|
# child.destroy()
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# def click_update(self):
|
||||||
|
# self.data.parsechaine()
|
||||||
|
# labelupdate = Label(self.resultframe.interior, text="update chaine done"+"\r")
|
||||||
|
# labelupdate.pack()
|
||||||
|
#
|
||||||
|
# def _openlink(self,link):
|
||||||
|
# webbrowser.open_new(link)
|
||||||
|
|
||||||
|
|
||||||
class JSONfile:
|
class JSONfile:
|
||||||
@ -292,4 +275,5 @@ if len(sys.argv) > 1:
|
|||||||
else:
|
else:
|
||||||
cli(arg,data.data)
|
cli(arg,data.data)
|
||||||
else:
|
else:
|
||||||
Interface(data).mainloop()
|
interface=InterfaceApp(data)
|
||||||
|
interface.run()
|
22
interface.kv
Normal file
22
interface.kv
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
|
||||||
|
<RootWidget>:
|
||||||
|
txt_inpt: txt_inpt
|
||||||
|
orientation:"vertical"
|
||||||
|
canvas.before:
|
||||||
|
Color:
|
||||||
|
rgba: 1, 1, 1, 1
|
||||||
|
Rectangle:
|
||||||
|
pos: self.pos
|
||||||
|
size: self.size
|
||||||
|
Label:
|
||||||
|
text:"entrer numéros de chaine"
|
||||||
|
color:0,0,0,1
|
||||||
|
|
||||||
|
TextInput:
|
||||||
|
id: txt_inpt
|
||||||
|
row:1
|
||||||
|
multiline:False
|
||||||
|
focus:True
|
||||||
|
Label:
|
||||||
|
text: txt_inpt.text
|
||||||
|
color:0,0,0,1
|
Loading…
Reference in New Issue
Block a user