Advertisement
Guest User

main.py

a guest
Mar 19th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.65 KB | None | 0 0
  1.  
  2. # -*-coding:Latin-1 -*
  3. import kivy
  4. kivy.require('1.0.9')
  5.  
  6. from kivy.properties import NumericProperty, StringProperty, ObjectProperty
  7. from kivy.app import App
  8. from kivy.lang import Builder
  9. from kivy.uix.widget import Widget
  10. from kivy.uix.floatlayout import FloatLayout
  11. from kivy.properties import ListProperty
  12. from kivy.uix.carousel import Carousel
  13. from kivy.uix.screenmanager import ScreenManager
  14. from kivy.uix.screenmanager import Screen
  15. from kivy.uix.button import Button
  16. from kivy.uix.label import Label
  17. from kivy.core.window import Window
  18. from kivy.uix.boxlayout import BoxLayout
  19. from kivy.uix.gridlayout import GridLayout
  20. from kivy.uix.togglebutton import ToggleButton
  21. from kivy.uix.checkbox import CheckBox
  22. from kivy.uix.scrollview import ScrollView
  23.  
  24.  
  25. import sys
  26. import matplotlib
  27. matplotlib.use("module://kivy.garden.matplotlib.backend_kivy")
  28. from matplotlib import pyplot, axes, text
  29. from kivy.garden.matplotlib import FigureCanvasKivyAgg, RendererKivy
  30. from kivy.app import App
  31. from kivy.properties import StringProperty
  32. from kivy.uix.button import Button
  33. from kivy.uix.screenmanager import Screen
  34. from kivy.uix.carousel import Carousel
  35. from kivy.uix.boxlayout import BoxLayout
  36. from kivy.graphics import Color
  37. from kivy.graphics import Canvas
  38.  
  39.  
  40. Window.size = (1920,1200)
  41. #Window.size = (960,600)
  42. Window.clearcolor = (1, 1, 1, 1)
  43. #Window.shape_image='/fond.jpg'
  44.  
  45.  
  46.  
  47. questions=[" Quelle est la date ?","Quelle est l'ann�e?","Lettre?"]
  48. reponses=[["a","b","c",r"$n_{\mathrm{offset}} = \sum_{k=0}^{N-1} s_k n_k$",\
  49.            r"$\sum_{n=1}^\infty\frac{-e^{i\pi}}{2^n}$    $n_{offset}= \sum_{k=0}^{N-1} s_k n_k$",r"$\exists$",\
  50.            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$"],\
  51.           [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.",\
  52.            "�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",\
  53.            "1997","1996"],["a","b","c"]]
  54. #questions=[" Quelle est la date ?"]
  55. #reponses=[["1","2","3","4"]]
  56. entrees=[[] for i in questions]
  57. QRM=True
  58.  
  59.  
  60. class QcmCarousel(Carousel):    
  61.     def __init__(self):
  62.         super(QcmCarousel, self).__init__()
  63.         self.addQuestions()
  64.  
  65.     def valider(instance,value):
  66.         print("Valid�")
  67.  
  68.     def addQuestions(self):
  69.         for i in range(len(questions)):
  70.             screen = QcmScreen(number=i,question=questions[i])
  71.             self.add_widget(screen)
  72.             screen.addAnswers(i)
  73.  
  74.         screen=Screen()
  75.         F=FloatLayout()
  76.         B=Button(text="Valider les R�ponses", size_hint=(.25, .1),pos_hint={'center_x':.5, 'center_y':.25})
  77.         B.bind(on_press=self.valider)
  78.         F.add_widget(B)
  79.         screen.add_widget(F)
  80.         self.add_widget(screen)
  81.  
  82.    
  83.  
  84.    
  85. class QcmScreen(Screen):
  86.     number=NumericProperty(0)
  87.     question=StringProperty("Erreur de chargement")
  88.     grid=ObjectProperty(None)
  89.  
  90.     def addAnswers(self,numb):  
  91.         for i in range(len(reponses[self.number])):
  92.  
  93.             textereponse=pyplot.figure(facecolor =(0, 1, 1, 0))
  94.             #textereponse.suptitle(reponses[numb][i],x=0.5,y=0.5)
  95.             textereponse.text(0.1,0.45,reponses[numb][i],wrap=True)
  96.             print(reponses[numb][i],"\nLongueur : ",len(reponses[numb][i]))
  97.             """
  98.            fig=pyplot.figure()
  99.            ax=fig.add_subplot(1,1,1)
  100.            ax.set_frame_on(False)
  101.            pyplot.axis('off')
  102.            text = ax.text(0.5, 0.5, togglebutton.mathtext, horizontalalignment='center', verticalalignment='center')
  103.            
  104.            togglebutton.add_widget(FigureCanvasKivyAgg(fig))
  105.            """
  106.             grp=str(self.number)
  107.             if QRM:
  108.                 grp+=str(i)
  109.                
  110.             can=FigureCanvasKivyAgg(textereponse)
  111.             self.grid.add_widget(can)
  112.             box=QcmCheckBox(number=i,group=grp,color=(0,0,0,1.5),size_hint_x=0.2)
  113.             self.grid.add_widget(box)
  114.  
  115.  
  116.  
  117. class QcmCheckBox(CheckBox):
  118.     number=NumericProperty(0)
  119.     answer=StringProperty("Erreur de chargement")
  120.     text=answer
  121.     #text=answer
  122.     #mathtext = StringProperty("$n_{\mathrm{offset}} = \sum_{k=0}^{N-1} s_k n_k$")
  123.     def on_press(self):
  124.         if self.state == 'down':
  125.             if not QRM:
  126.                 del entrees[self.parent.parent.parent.parent.number][:]
  127.             entrees[self.parent.parent.parent.parent.number].append(self.number)
  128.         else:      
  129.             entrees[self.parent.parent.parent.parent.number].remove(self.number)
  130.         print("entrees :", entrees)
  131.  
  132.     """
  133.    def __init__(self,number,answer):
  134.        super(QcmToggleButton, self).__init__()
  135.        
  136.        fig=pyplot.figure()
  137.        ax=fig.add_subplot(1,1,1)
  138.        ax.set_frame_on(False)
  139.        pyplot.axis('off')
  140.        text = ax.text(0.5, 0.5, self.mathtext, horizontalalignment='center', verticalalignment='center')
  141.        renderer = FigureCanvasKivyAgg(fig)
  142.    
  143.    
  144.        
  145.  
  146.    def on_press(self):
  147.        if self.state == 'down':
  148.            #si plusieurs r�ponses, il suffit d'enlever le for
  149.            for button in self.parent.children:
  150.                if button!=self:
  151.                    button.state='normal'
  152.            entrees[self.parent.parent.parent.number]=self.number
  153.            #ou : entrees[self.screennumber]=self.number  (atribut screenumber � d�finir dans la classe)
  154.  
  155.        else:      
  156.            entrees[self.parent.parent.parent.number]=None
  157.        print("entrees :", entrees)
  158.        """
  159.  
  160.    
  161. """
  162.    def on_state(self, widget, value):
  163.        if value == 'down':
  164.            for button in self.parent.children:
  165.                if button!=self:
  166.                    button.state='normal'
  167.            entrees[self.parent.parent.parent.number]=self.number
  168.            #ou : entrees[self.screennumber]=self.number  (atribut screenumber � d�finir dans la classe)
  169.  
  170.        else:      
  171.            entrees[self.parent.parent.parent.number]=None
  172.        print(entrees)
  173. """            
  174.  
  175.    
  176. class QcmApp(App):
  177.     def Build(self):
  178.         self.title = 'QCM'
  179.         qcm=QcmCarousel()
  180.         return qcm
  181.  
  182.  
  183.  
  184. if __name__ == '__main__':
  185.    QcmApp().run()
  186.  
  187. '''
  188. <QuestionScreen>:
  189.    name:
  190.    AnchorLayout:
  191.        anchor_x: 'center'
  192.        anchor_y: 'top'
  193.        ScreenManager:
  194.            size_hint: 1, 1
  195.            id: _screen_manager
  196.  
  197.  
  198. import kivy
  199.  
  200. from kivy.app import App
  201. from kivy.uix.button import Button
  202. from kivy.uix.gridlayout import GridLayout
  203. from kivy.uix.floatlayout import *
  204. from kivy.uix.widget import *
  205. from kivy.properties import *
  206.  
  207. class BoutonsReponse(FloatLayout):
  208.        def __init__(self, **kwargs):
  209.                super(FloatLayout, self).__init__(**kwargs)
  210.                root=FloatLayout()
  211.                self.cols = 2
  212.                self.rows = 2
  213.                #on définit un widget ButtonA d'abord, puis on fait self.add_widget(ButtonA)
  214.                self.add_widget(Button(text='réponse A'))
  215.                self.pos_hint={'right': 1, 'center_y': .5}
  216.                self.add_widget(Button(text='réponse B'))
  217.                self.pos_hint={'right': .75, 'center_y': .5}
  218.                self.add_widget(Button(text='réponse C'))
  219.                self.pos_hint={'right': .5, 'center_y': .5}
  220.                self.add_widget(Button(text='réponse D'))
  221.                self.pos_hint={'right': .25, 'center_y': .5}
  222.  
  223. class MyApp(App):
  224.        def build(self):
  225.                return BoutonsReponse()
  226.  
  227.                
  228. if __name__=='__main__':            
  229.    MyApp().run()
  230.  
  231. '''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement