Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*-coding:Latin-1 -*
- import kivy
- kivy.require('1.0.9')
- from kivy.properties import NumericProperty, StringProperty, ObjectProperty
- from kivy.app import App
- from kivy.lang import Builder
- from kivy.uix.widget import Widget
- from kivy.uix.floatlayout import FloatLayout
- from kivy.properties import ListProperty
- from kivy.uix.carousel import Carousel
- from kivy.uix.screenmanager import ScreenManager
- from kivy.uix.screenmanager import Screen
- from kivy.uix.button import Button
- from kivy.uix.label import Label
- from kivy.core.window import Window
- from kivy.uix.boxlayout import BoxLayout
- from kivy.uix.gridlayout import GridLayout
- from kivy.uix.togglebutton import ToggleButton
- from kivy.uix.checkbox import CheckBox
- from kivy.uix.scrollview import ScrollView
- import sys
- import matplotlib
- matplotlib.use("module://kivy.garden.matplotlib.backend_kivy")
- from matplotlib import pyplot, axes, text
- from kivy.garden.matplotlib import FigureCanvasKivyAgg, RendererKivy
- from kivy.app import App
- from kivy.properties import StringProperty
- from kivy.uix.button import Button
- from kivy.uix.screenmanager import Screen
- from kivy.uix.carousel import Carousel
- from kivy.uix.boxlayout import BoxLayout
- from kivy.graphics import Color
- from kivy.graphics import Canvas
- Window.size = (1920,1200)
- #Window.size = (960,600)
- Window.clearcolor = (1, 1, 1, 1)
- #Window.shape_image='/fond.jpg'
- questions=[" Quelle est la date ?","Quelle est l'ann�e?","Lettre?"]
- reponses=[["a","b","c",r"$n_{\mathrm{offset}} = \sum_{k=0}^{N-1} s_k n_k$",\
- r"$\sum_{n=1}^\infty\frac{-e^{i\pi}}{2^n}$ $n_{offset}= \sum_{k=0}^{N-1} s_k n_k$",r"$\exists$",\
- r"$\sum_{n=1}^\infty\frac{-e^{i\pi}}{2^n}$ $n_{offset}= \sum_{k=0}^{N-1} s_k n_k$",r"$\sum_{n=1}^\infty\frac{-e^{i\pi}}{2^n}$ $n_{offset}= \sum_{k=0}^{N-1} s_k n_k$"],\
- [r"$n_{\mathrm{offset}} = \sum_{k=0}^{N-1} s_k n_k$ et ce texte s'est adapt� automatiquement � l'espace qui lui est d�di�. Le placement est quand m�me pas hyper ouf.",\
- "�a mange pas de pain mais �a arrache des croutes, 01234 ou est la matrice n�buleuse, la flute enchant� et le chapeau de verre qui repose sur la tete de tous les fdp, les principaut�s se levent car vient l'heure d'aller se faire mettre",\
- "1997","1996"],["a","b","c"]]
- #questions=[" Quelle est la date ?"]
- #reponses=[["1","2","3","4"]]
- entrees=[[] for i in questions]
- QRM=True
- class QcmCarousel(Carousel):
- def __init__(self):
- super(QcmCarousel, self).__init__()
- self.addQuestions()
- def valider(instance,value):
- print("Valid�")
- def addQuestions(self):
- for i in range(len(questions)):
- screen = QcmScreen(number=i,question=questions[i])
- self.add_widget(screen)
- screen.addAnswers(i)
- screen=Screen()
- F=FloatLayout()
- B=Button(text="Valider les R�ponses", size_hint=(.25, .1),pos_hint={'center_x':.5, 'center_y':.25})
- B.bind(on_press=self.valider)
- F.add_widget(B)
- screen.add_widget(F)
- self.add_widget(screen)
- class QcmScreen(Screen):
- number=NumericProperty(0)
- question=StringProperty("Erreur de chargement")
- grid=ObjectProperty(None)
- def addAnswers(self,numb):
- for i in range(len(reponses[self.number])):
- textereponse=pyplot.figure(facecolor =(0, 1, 1, 0))
- #textereponse.suptitle(reponses[numb][i],x=0.5,y=0.5)
- textereponse.text(0.1,0.45,reponses[numb][i],wrap=True)
- print(reponses[numb][i],"\nLongueur : ",len(reponses[numb][i]))
- """
- fig=pyplot.figure()
- ax=fig.add_subplot(1,1,1)
- ax.set_frame_on(False)
- pyplot.axis('off')
- text = ax.text(0.5, 0.5, togglebutton.mathtext, horizontalalignment='center', verticalalignment='center')
- togglebutton.add_widget(FigureCanvasKivyAgg(fig))
- """
- grp=str(self.number)
- if QRM:
- grp+=str(i)
- can=FigureCanvasKivyAgg(textereponse)
- self.grid.add_widget(can)
- box=QcmCheckBox(number=i,group=grp,color=(0,0,0,1.5),size_hint_x=0.2)
- self.grid.add_widget(box)
- class QcmCheckBox(CheckBox):
- number=NumericProperty(0)
- answer=StringProperty("Erreur de chargement")
- text=answer
- #text=answer
- #mathtext = StringProperty("$n_{\mathrm{offset}} = \sum_{k=0}^{N-1} s_k n_k$")
- def on_press(self):
- if self.state == 'down':
- if not QRM:
- del entrees[self.parent.parent.parent.parent.number][:]
- entrees[self.parent.parent.parent.parent.number].append(self.number)
- else:
- entrees[self.parent.parent.parent.parent.number].remove(self.number)
- print("entrees :", entrees)
- """
- def __init__(self,number,answer):
- super(QcmToggleButton, self).__init__()
- fig=pyplot.figure()
- ax=fig.add_subplot(1,1,1)
- ax.set_frame_on(False)
- pyplot.axis('off')
- text = ax.text(0.5, 0.5, self.mathtext, horizontalalignment='center', verticalalignment='center')
- renderer = FigureCanvasKivyAgg(fig)
- def on_press(self):
- if self.state == 'down':
- #si plusieurs r�ponses, il suffit d'enlever le for
- for button in self.parent.children:
- if button!=self:
- button.state='normal'
- entrees[self.parent.parent.parent.number]=self.number
- #ou : entrees[self.screennumber]=self.number (atribut screenumber � d�finir dans la classe)
- else:
- entrees[self.parent.parent.parent.number]=None
- print("entrees :", entrees)
- """
- """
- def on_state(self, widget, value):
- if value == 'down':
- for button in self.parent.children:
- if button!=self:
- button.state='normal'
- entrees[self.parent.parent.parent.number]=self.number
- #ou : entrees[self.screennumber]=self.number (atribut screenumber � d�finir dans la classe)
- else:
- entrees[self.parent.parent.parent.number]=None
- print(entrees)
- """
- class QcmApp(App):
- def Build(self):
- self.title = 'QCM'
- qcm=QcmCarousel()
- return qcm
- if __name__ == '__main__':
- QcmApp().run()
- '''
- <QuestionScreen>:
- name:
- AnchorLayout:
- anchor_x: 'center'
- anchor_y: 'top'
- ScreenManager:
- size_hint: 1, 1
- id: _screen_manager
- import kivy
- from kivy.app import App
- from kivy.uix.button import Button
- from kivy.uix.gridlayout import GridLayout
- from kivy.uix.floatlayout import *
- from kivy.uix.widget import *
- from kivy.properties import *
- class BoutonsReponse(FloatLayout):
- def __init__(self, **kwargs):
- super(FloatLayout, self).__init__(**kwargs)
- root=FloatLayout()
- self.cols = 2
- self.rows = 2
- #on définit un widget ButtonA d'abord, puis on fait self.add_widget(ButtonA)
- self.add_widget(Button(text='réponse A'))
- self.pos_hint={'right': 1, 'center_y': .5}
- self.add_widget(Button(text='réponse B'))
- self.pos_hint={'right': .75, 'center_y': .5}
- self.add_widget(Button(text='réponse C'))
- self.pos_hint={'right': .5, 'center_y': .5}
- self.add_widget(Button(text='réponse D'))
- self.pos_hint={'right': .25, 'center_y': .5}
- class MyApp(App):
- def build(self):
- return BoutonsReponse()
- if __name__=='__main__':
- MyApp().run()
- '''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement