Advertisement
Guest User

Scattergories python v0.9

a guest
Nov 27th, 2014
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 27.53 KB | None | 0 0
  1. from Tkinter import *
  2. import tkMessageBox
  3. import smtplib
  4. import time
  5. import Tkinter
  6. import imaplib
  7. import email
  8. class Scattergories(Tkinter.Frame):
  9.    
  10.     def __init__(self, master=None):
  11.        
  12.         Tkinter.Frame.__init__(self, master)
  13.        
  14.        
  15.         root.title("Scattergories")
  16.         root.geometry("600x650")
  17.         self.mode = "stopped"
  18.  
  19.         self.entrysframe = Frame(master=None)
  20.         self.entrysframe.pack()
  21.         self.upperframe = Frame(self.entrysframe)
  22.         self.upperframe.pack()
  23.         self.newgame = Button(self.upperframe, text='New Game', command=self.newgame)
  24.         self.newgame.pack(pady=10)
  25.         self.identryframe=Frame(self.upperframe)
  26.         self.identryframe.pack(pady=3)
  27.         self.labeluniqueidis = Label(self.upperframe, text="ID:")
  28.         self.labeluniqueidis.pack()
  29.         self.create_entryboxes()
  30.  
  31.  
  32.         self.lowerframe = Frame(self.entrysframe, relief=SUNKEN, borderwidth=1)
  33.         self.lowerframe.pack(side=LEFT)
  34.         self.scoreframe = Frame(self.entrysframe, relief=SUNKEN, borderwidth=1)
  35.         self.scoreframe.pack(side=LEFT, padx=30, anchor=N)
  36.         self.start_time = 0
  37.         self.elapsed_time = 0
  38.         self.create_buttons()
  39.         self.update_timeText()
  40.         self.uniqueID = StringVar()
  41.  
  42.         labeluniqueid = Label(self.identryframe, text="Unique ID:")
  43.         labeluniqueid.pack(side=LEFT)
  44.         self.identrybox = Entry(self.identryframe, textvariable=self.uniqueID)
  45.         self.identrybox.pack(side=LEFT)
  46.         self.confirmbutton = Button(self.identryframe, text='Confirm', command=self.confirm)
  47.         self.confirmbutton.pack(side=LEFT)
  48.         self.score = Label(self.scoreframe, text=("Score"), font=("Arial", 13))
  49.         self.score.pack(pady=5)
  50.         self.round=1
  51.  
  52.        
  53.     def createtallylabel(self):
  54.  
  55.         self.yourtally =(self.var_answer1.get()+
  56.                self.var_answer2.get()+
  57.                self.var_answer3.get()+
  58.                self.var_answer4.get()+
  59.                self.var_answer5.get()+
  60.                self.var_answer6.get()+
  61.                self.var_answer7.get()+
  62.                self.var_answer8.get()+
  63.                self.var_answer9.get()+
  64.                self.var_answer10.get()+
  65.                self.var_answer11.get()+
  66.                self.var_answer12.get())
  67.  
  68.        
  69.         self.rndscore = Label(self.scoreframe, text=('Round ' + str(self.round) + ': ' + str(self.yourtally) + '-' + str(self.theirtally)))
  70.         self.rndscore.pack()
  71.        
  72.        
  73.  
  74.        
  75.     def confirm(self):
  76.         self.uniqueID.get()
  77.         self.labeluniqueidis.configure(text=("ID: " + self.uniqueID.get() + str(self.round)))
  78.        
  79.    
  80.     def create_buttons(self):
  81.         self.timeText = Label(self.lowerframe, text="02:05", font=("Arial", 20))
  82.         self.timeText.pack()
  83.        
  84.         buttonsframe = Frame(self.lowerframe)
  85.         buttonsframe.pack()
  86.        
  87.         self.start_pause_unpause_Button = Tkinter.Button(buttonsframe, text='Start', command=self.start_pause_unpause)
  88.         self.start_pause_unpause_Button.pack(side=LEFT)
  89.        
  90.         reset_button = Tkinter.Button(buttonsframe, text='Next Round', command=self.nextround)
  91.         reset_button.pack(side=LEFT)
  92.  
  93.         self.fetchanswers = Button(self.lowerframe, text='Fetch Answers', command=self.fetch)
  94.         self.fetchanswers.pack(pady=3)
  95.  
  96.         sendandgrab = Frame(self.lowerframe)
  97.         sendandgrab.pack(pady=5, padx=5)
  98.  
  99.         self.send = Button(sendandgrab, text='Send score', command=self.send_score)
  100.         self.send.pack(side=LEFT)
  101.         self.retrieve = Button(sendandgrab, text='Retrieve score', command=self.retrieve_score)
  102.         self.retrieve.pack(side=LEFT)
  103.  
  104.        
  105.     def fetch(self):
  106.         mail = imaplib.IMAP4_SSL('imap.gmail.com')
  107.         mail.login(self.emailstring.get(), self.passstring.get())
  108.         mail.list()
  109.         mail.select('inbox')
  110.          
  111.         result, data = mail.uid('search', None, "ALL")
  112.         i = len(data[0].split())
  113.         upper=len(self.uniqueID.get())
  114.         for x in range(i-1,i-12,-1):
  115.             latest_email_uid = data[0].split()[x]
  116.             result, email_data = mail.uid('fetch', latest_email_uid, '(RFC822)')
  117.             raw_email = email_data[0][1]
  118.             try:
  119.                 raw_email_string = raw_email.decode('utf-8')
  120.                 email_message = email.message_from_string(raw_email_string)
  121.             except Exception:
  122.                 continue
  123.             for part in email_message.walk():
  124.                 if part.get_content_type() == "text/plain":
  125.                     body = part.get_payload(decode=True)
  126.                     if str(body)[0:upper+1]==self.uniqueID.get()+str(self.round):
  127.                         self.a = str(body)
  128.                         self.answerlist = []
  129.                         for i in self.a.rstrip().split('\n'):
  130.                             self.answerlist.append(i[:-1])
  131.                         self.create_answerlabels()
  132.                         return None
  133.                
  134.                 else:
  135.                     continue
  136.  
  137.  
  138.    
  139.     def set_time(self, minutes, seconds):
  140.         pattern = '{0:02d}:{1:02d}'
  141.         timeString = pattern.format(minutes, seconds)
  142.         if timeString == '00:00':
  143.             self.submit()
  144.             self.time_elapsed = 0
  145.             self.mode = "stopped"
  146.         self.timeText.configure(text=timeString)
  147.  
  148.        
  149.     def update_timeText(self):
  150.         if self.mode == "running":
  151.             self.time_elapsed = time.time() - self.start_time + self.elapsed_time
  152.             blabla = 125 - self.time_elapsed
  153.             seconds = int(blabla % 60)
  154.             minutes = int((blabla/60) % 60)
  155.             self.set_time(minutes, seconds)
  156.            
  157.         elif self.mode == "running":
  158.             self.elapsed_time = self.elapsed_time + time.time() - self.start_time
  159.             self.mode = "stopped"
  160.             self.start_pause_unpause_Button.config(text="Resume")
  161.         self.after(1000, self.update_timeText)
  162.        
  163.     def nextround(self):
  164.         self.mode = "stopped"
  165.         self.elapsed_time = 0
  166.         self.set_time(2,10)
  167.         self.timeText.configure(text="02:05")
  168.         self.start_pause_unpause_Button.config(text="Start")
  169.         self.clear()
  170.         self.disable_entry()
  171.         self.cleartheiranswers()
  172.         self.round+=1
  173.         self.clear_checkboxes()
  174.         self.clear_highlights()
  175.        
  176.     def newgame(self):
  177.         self.mode = "stopped"
  178.         self.elapsed_time = 0
  179.         self.set_time(2,10)
  180.         self.timeText.configure(text="02:05")
  181.         self.start_pause_unpause_Button.config(text="Start")
  182.         self.clear()
  183.         self.disable_entry()
  184.         self.round=1
  185.         self.uniqueID.set('')
  186.         self.labeluniqueidis.config(text='ID:')
  187.         self.cleartheiranswers()
  188.         self.clear_checkboxes()
  189.         self.clear_highlights()
  190.         self.rndscore.config(text="")
  191.        
  192.     def start_pause_unpause(self):
  193.         if self.mode == "stopped":
  194.             self.start_time = time.time()
  195.             self.mode = "running"
  196.  
  197.         self.enable_entry()
  198.  
  199.     def clear(self):
  200.         self.answer1.set('')
  201.         self.answer2.set('')
  202.         self.answer3.set('')
  203.         self.answer4.set('')
  204.         self.answer5.set('')
  205.         self.answer6.set('')
  206.         self.answer7.set('')
  207.         self.answer8.set('')
  208.         self.answer9.set('')
  209.         self.answer10.set('')
  210.         self.answer11.set('')
  211.         self.answer12.set('')
  212.  
  213.    
  214.     def create_entryboxes(self):
  215.         #Entry box, variable is a string variable
  216.         self.answer1 = StringVar()
  217.         self.answer2 = StringVar()
  218.         self.answer3 = StringVar()
  219.         self.answer4 = StringVar()
  220.         self.answer5 = StringVar()
  221.         self.answer6 = StringVar()
  222.         self.answer7 = StringVar()
  223.         self.answer8 = StringVar()
  224.         self.answer9 = StringVar()
  225.         self.answer10 = StringVar()
  226.         self.answer11 = StringVar()
  227.         self.answer12 = StringVar()
  228.         self.emailstring = StringVar()
  229.         self.passstring = StringVar()
  230.         self.opponentstring = StringVar()
  231.         self.emailstring.set('')
  232.         self.opponentstring.set('')
  233.         self.passstring.set('')
  234.        
  235.        
  236.         self.emailframe = Frame(self.upperframe)
  237.         self.emailframe.pack()
  238.         labele = Label(self.emailframe, text="Email:")
  239.         labele.pack(side=LEFT)
  240.         self.emailentry = Entry(self.emailframe, textvariable=self.emailstring)
  241.         self.emailentry.pack(padx=5, side=LEFT)
  242.         labelpass = Label(self.emailframe, text="Pass:")
  243.         labelpass.pack(side=LEFT)
  244.         self.passentry = Entry(self.emailframe, textvariable=self.passstring, show='*')
  245.         self.passentry.pack(padx=5, side=LEFT)
  246.  
  247.         self.opponentframe = Frame(self.upperframe)
  248.         self.opponentframe.pack(pady=10)
  249.         labelo = Label(self.opponentframe, text="Opponent:")
  250.         labelo.pack(side=LEFT)
  251.         self.oentry = Entry(self.opponentframe, textvariable=self.opponentstring)
  252.         self.oentry.pack(padx=5, side=LEFT)
  253.  
  254.         self.eframe1=Frame(self.entrysframe)
  255.         self.eframe1.pack(anchor=W, padx=100)
  256.         label1 = Label(self.eframe1, text="1:")
  257.         label1.pack(side=LEFT)
  258.         self.text1 = Entry(self.eframe1, textvariable=self.answer1)
  259.         self.text1.pack(padx=5, side=LEFT)
  260.         self.var_answer1 = IntVar()
  261.         self.var_answer1.set(0)
  262.         answer1checkbutton = Checkbutton(self.eframe1,
  263.                                            variable = self.var_answer1)
  264.         answer1checkbutton.pack(side=LEFT)
  265.         self.text1.configure(state='disabled')
  266.  
  267.         self.eframe2=Frame(self.entrysframe)
  268.         self.eframe2.pack(anchor=W, padx=100)
  269.         label2 = Label(self.eframe2, text="2:")
  270.         label2.pack(side=LEFT)
  271.         self.text2 = Entry(self.eframe2, textvariable=self.answer2)
  272.         self.text2.pack(padx=5, side=LEFT)
  273.         self.var_answer2 = IntVar()
  274.         self.var_answer2.set(0)
  275.         answer2checkbutton = Checkbutton(self.eframe2,
  276.                                            variable = self.var_answer2)
  277.         answer2checkbutton.pack(side=LEFT)
  278.         self.text2.configure(state='disabled')
  279.        
  280.         self.eframe3=Frame(self.entrysframe)
  281.         self.eframe3.pack(anchor=W, padx=100)
  282.         label3 = Label(self.eframe3, text="3:")
  283.         label3.pack(side=LEFT)
  284.         self.text3 = Entry(self.eframe3, textvariable=self.answer3)
  285.         self.text3.pack(padx=5, side=LEFT)
  286.         self.text3.configure(state='disabled')
  287.         self.var_answer3 = IntVar()
  288.         self.var_answer3.set(0)
  289.         answer3checkbutton = Checkbutton(self.eframe3,
  290.                                            variable = self.var_answer3)
  291.         answer3checkbutton.pack(side=LEFT)
  292.        
  293.         self.eframe4=Frame(self.entrysframe)
  294.         self.eframe4.pack(anchor=W, padx=100)
  295.         label4 = Label(self.eframe4, text="4:")
  296.         label4.pack(side=LEFT)
  297.         self.text4 = Entry(self.eframe4, textvariable=self.answer4)
  298.         self.text4.pack(padx=5, side=LEFT)
  299.         self.text4.configure(state='disabled')
  300.         self.var_answer4 = IntVar()
  301.         self.var_answer4.set(0)
  302.         answer4checkbutton = Checkbutton(self.eframe4,
  303.                                            variable = self.var_answer4)
  304.         answer4checkbutton.pack(side=LEFT)
  305.        
  306.         self.eframe5=Frame(self.entrysframe)
  307.         self.eframe5.pack(anchor=W, padx=100)
  308.         label5 = Label(self.eframe5, text="5:")
  309.         label5.pack(side=LEFT)
  310.         self.text5 = Entry(self.eframe5, textvariable=self.answer5)
  311.         self.text5.pack(padx=5, side=LEFT)
  312.         self.text5.configure(state='disabled')
  313.         self.var_answer5 = IntVar()
  314.         self.var_answer5.set(0)
  315.         answer5checkbutton = Checkbutton(self.eframe5,
  316.                                            variable = self.var_answer5)
  317.         answer5checkbutton.pack(side=LEFT)
  318.        
  319.         self.eframe6=Frame(self.entrysframe)
  320.         self.eframe6.pack(anchor=W, padx=100)
  321.         label6 = Label(self.eframe6, text="6:")
  322.         label6.pack(side=LEFT)
  323.         self.text6 = Entry(self.eframe6, textvariable=self.answer6)
  324.         self.text6.pack(padx=5, side=LEFT)
  325.         self.text6.configure(state='disabled')
  326.         self.var_answer6 = IntVar()
  327.         self.var_answer6.set(0)
  328.         answer6checkbutton = Checkbutton(self.eframe6,
  329.                                            variable = self.var_answer6)
  330.         answer6checkbutton.pack(side=LEFT)
  331.        
  332.         self.eframe7=Frame(self.entrysframe)
  333.         self.eframe7.pack(anchor=W, padx=100)
  334.         label7 = Label(self.eframe7, text="7:")
  335.         label7.pack(side=LEFT)
  336.         self.text7 = Entry(self.eframe7, textvariable=self.answer7)
  337.         self.text7.pack(padx=5, side=LEFT)
  338.         self.text7.configure(state='disabled')
  339.         self.var_answer7 = IntVar()
  340.         self.var_answer7.set(0)
  341.         answer7checkbutton = Checkbutton(self.eframe7,
  342.                                            variable = self.var_answer7)
  343.         answer7checkbutton.pack(side=LEFT)
  344.        
  345.         self.eframe8=Frame(self.entrysframe)
  346.         self.eframe8.pack(anchor=W, padx=100)
  347.         label8 = Label(self.eframe8, text="8:")
  348.         label8.pack(side=LEFT)
  349.         self.text8 = Entry(self.eframe8, textvariable=self.answer8)
  350.         self.text8.pack(padx=5, side=LEFT)
  351.         self.text8.configure(state='disabled')
  352.         self.var_answer8 = IntVar()
  353.         self.var_answer8.set(0)
  354.         answer8checkbutton = Checkbutton(self.eframe8,
  355.                                            variable = self.var_answer8)
  356.         answer8checkbutton.pack(side=LEFT)
  357.        
  358.         self.eframe9=Frame(self.entrysframe)
  359.         self.eframe9.pack(anchor=W, padx=100)
  360.         label9 = Label(self.eframe9, text="9:")
  361.         label9.pack(side=LEFT)
  362.         self.text9 = Entry(self.eframe9, textvariable=self.answer9)
  363.         self.text9.pack(padx=5, side=LEFT)
  364.         self.text9.configure(state='disabled')
  365.         self.var_answer9 = IntVar()
  366.         self.var_answer9.set(0)
  367.         answer9checkbutton = Checkbutton(self.eframe9,
  368.                                            variable = self.var_answer9)
  369.         answer9checkbutton.pack(side=LEFT)
  370.        
  371.         self.eframe10=Frame(self.entrysframe)
  372.         self.eframe10.pack(anchor=W, padx=94)
  373.         label10 = Label(self.eframe10, text="10:")
  374.         label10.pack(side=LEFT)
  375.         self.text10 = Entry(self.eframe10, textvariable=self.answer10)
  376.         self.text10.pack(padx=5, side=LEFT)
  377.         self.text10.configure(state='disabled')
  378.         self.var_answer10 = IntVar()
  379.         self.var_answer10.set(0)
  380.         answer10checkbutton = Checkbutton(self.eframe10,
  381.                                            variable = self.var_answer10)
  382.         answer10checkbutton.pack(side=LEFT)
  383.        
  384.         self.eframe11=Frame(self.entrysframe)
  385.         self.eframe11.pack(anchor=W, padx=94)
  386.         label11 = Label(self.eframe11, text="11:")
  387.         label11.pack(side=LEFT)
  388.         self.text11 = Entry(self.eframe11, textvariable=self.answer11)
  389.         self.text11.pack(padx=5, side=LEFT)
  390.         self.text11.configure(state='disabled')
  391.         self.var_answer11 = IntVar()
  392.         self.var_answer11.set(0)
  393.         answer11checkbutton = Checkbutton(self.eframe11,
  394.                                            variable = self.var_answer11)
  395.         answer11checkbutton.pack(side=LEFT)
  396.        
  397.         self.eframe12=Frame(self.entrysframe)
  398.         self.eframe12.pack(anchor=W, padx=94)
  399.         label12 = Label(self.eframe12, text="12:")
  400.         label12.pack(side=LEFT)
  401.         self.text12 = Entry(self.eframe12, textvariable=self.answer12)
  402.         self.text12.pack(padx=5, side=LEFT)
  403.         self.text12.configure(state='disabled')
  404.         self.var_answer12 = IntVar()
  405.         self.var_answer12.set(0)
  406.         answer12checkbutton = Checkbutton(self.eframe12,
  407.                                            variable = self.var_answer12)
  408.         answer12checkbutton.pack(side=LEFT)
  409.            
  410.     def clear_checkboxes(self):
  411.         self.var_answer1.set(0)
  412.         self.var_answer2.set(0)
  413.         self.var_answer3.set(0)
  414.         self.var_answer4.set(0)
  415.         self.var_answer5.set(0)
  416.         self.var_answer6.set(0)
  417.         self.var_answer7.set(0)
  418.         self.var_answer8.set(0)
  419.         self.var_answer9.set(0)
  420.         self.var_answer10.set(0)
  421.         self.var_answer11.set(0)
  422.         self.var_answer12.set(0)
  423.        
  424.    
  425.     def create_answerlabels(self):
  426.  
  427.  
  428.         self.answer1label = Label(self.eframe1)
  429.         self.answer1label.pack(side=TOP)
  430.         self.answer1label.config(text=("1: " + self.answerlist[1][2:]))
  431.  
  432.         self.answer2label = Label(self.eframe2)
  433.         self.answer2label.pack(side=TOP)
  434.         self.answer2label.config(text=("2: " + self.answerlist[2][2:]))
  435.  
  436.         self.answer3label = Label(self.eframe3)
  437.         self.answer3label.pack(side=TOP)
  438.         self.answer3label.config(text=("3: " + self.answerlist[3][2:]))
  439.  
  440.         self.answer4label = Label(self.eframe4)
  441.         self.answer4label.pack(side=TOP)
  442.         self.answer4label.config(text=("4: " + self.answerlist[4][2:]))
  443.  
  444.         self.answer5label = Label(self.eframe5)
  445.         self.answer5label.pack(side=TOP)
  446.         self.answer5label.config(text=("5: " + self.answerlist[5][2:]))
  447.  
  448.         self.answer6label = Label(self.eframe6)
  449.         self.answer6label.pack(side=TOP)
  450.         self.answer6label.config(text=("6: " + self.answerlist[6][2:]))
  451.  
  452.         self.answer7label = Label(self.eframe7)
  453.         self.answer7label.pack(side=TOP)
  454.         self.answer7label.config(text=("7: " + self.answerlist[7][2:]))
  455.  
  456.         self.answer8label = Label(self.eframe8)
  457.         self.answer8label.pack(side=TOP)
  458.         self.answer8label.config(text=("8: " + self.answerlist[8][2:]))
  459.        
  460.         self.answer9label = Label(self.eframe9)
  461.         self.answer9label.pack(side=TOP)
  462.         self.answer9label.config(text=("9: " + self.answerlist[9][2:]))
  463.  
  464.         self.answer10label = Label(self.eframe10)
  465.         self.answer10label.pack(side=TOP)
  466.         self.answer10label.config(text=("10: " + self.answerlist[10][2:]))
  467.  
  468.         self.answer11label = Label(self.eframe11)
  469.         self.answer11label.pack(side=TOP)
  470.         self.answer11label.config(text=("11: " + self.answerlist[11][2:]))
  471.  
  472.         self.answer12label = Label(self.eframe12)
  473.         self.answer12label.pack(side=TOP)
  474.         self.answer12label.config(text=("12: " + self.answerlist[12][2:]))
  475.        
  476.     def cleartheiranswers(self):
  477.         try:
  478.             self.answer1label.config(text=(""))
  479.             self.answer2label.config(text=(""))
  480.             self.answer3label.config(text=(""))
  481.             self.answer4label.config(text=(""))
  482.             self.answer5label.config(text=(""))
  483.             self.answer6label.config(text=(""))
  484.             self.answer7label.config(text=(""))                        
  485.             self.answer8label.config(text=(""))
  486.             self.answer9label.config(text=(""))                                
  487.             self.answer10label.config(text=(""))
  488.             self.answer11label.config(text=(""))                        
  489.             self.answer12label.config(text=(""))
  490.         except:
  491.             pass
  492.  
  493.                                  
  494.     def enable_entry(self):
  495.         self.text1.configure(state='normal')
  496.         self.text2.configure(state='normal')
  497.         self.text3.configure(state='normal')
  498.         self.text4.configure(state='normal')
  499.         self.text5.configure(state='normal')
  500.         self.text6.configure(state='normal')
  501.         self.text7.configure(state='normal')
  502.         self.text8.configure(state='normal')
  503.         self.text9.configure(state='normal')
  504.         self.text10.configure(state='normal')
  505.         self.text11.configure(state='normal')
  506.         self.text12.configure(state='normal')
  507.        
  508.     def disable_entry(self):
  509.         self.text1.configure(state='disabled')
  510.         self.text2.configure(state='disabled')
  511.         self.text3.configure(state='disabled')
  512.         self.text4.configure(state='disabled')
  513.         self.text5.configure(state='disabled')
  514.         self.text6.configure(state='disabled')
  515.         self.text7.configure(state='disabled')
  516.         self.text8.configure(state='disabled')
  517.         self.text9.configure(state='disabled')
  518.         self.text10.configure(state='disabled')
  519.         self.text11.configure(state='disabled')
  520.         self.text12.configure(state='disabled')
  521.        
  522.     def submit(self):
  523.         fname = 'scattegoriesanswers.txt'
  524.         with open(fname, 'w') as fout:
  525.             fout.write(self.uniqueID.get()+str(self.round))
  526.             fout.write("\n1:")
  527.             fout.write(self.answer1.get())
  528.             fout.write("\n2:")
  529.             fout.write(self.answer2.get())
  530.             fout.write("\n3:")
  531.             fout.write(self.answer3.get())
  532.             fout.write("\n4:")
  533.             fout.write(self.answer4.get())
  534.             fout.write("\n5:")
  535.             fout.write(self.answer5.get())
  536.             fout.write("\n6:")
  537.             fout.write(self.answer6.get())
  538.             fout.write("\n7:")
  539.             fout.write(self.answer7.get())
  540.             fout.write("\n8:")
  541.             fout.write(self.answer8.get())
  542.             fout.write("\n9:")
  543.             fout.write(self.answer9.get())
  544.             fout.write("\n10:")
  545.             fout.write(self.answer10.get())
  546.             fout.write("\n11:")
  547.             fout.write(self.answer11.get())
  548.             fout.write("\n12:")
  549.             fout.write(self.answer12.get())
  550.          
  551.         self.send_email()
  552.        
  553.     def send_email(self):
  554.        
  555.             with open ("scattegoriesanswers.txt", "r") as myfile:
  556.                 data=myfile.read()
  557.                
  558.             gmail_user = self.emailstring.get()
  559.             gmail_pwd = self.passstring.get()
  560.             FROM = self.emailstring.get()
  561.             TO = [self.opponentstring.get()] #must be a list
  562.             SUBJECT = "Scattergories"
  563.             TEXT = data
  564.  
  565.             # Prepare actual message
  566.             message = """\From: %s\nTo: %s\nSubject: %s\n\n%s
  567.            """ % (FROM, ", ".join(TO), SUBJECT, TEXT)
  568.             try:
  569.                 #server = smtplib.SMTP(SERVER)
  570.                 server = smtplib.SMTP("smtp.gmail.com", 587) #or port 465 doesn't seem to work!
  571.                 server.ehlo()
  572.                 server.starttls()
  573.                 server.login(gmail_user, gmail_pwd)
  574.                 server.sendmail(FROM, TO, message)
  575.                 #server.quit()
  576.                 server.close()
  577.                 print 'successfully sent the mail'
  578.             except:
  579.                 print "failed to send mail"
  580.  
  581.     def send_score(self):
  582.  
  583.         cseriesonoroff =  (str(self.var_answer1.get())+
  584.                 str(self.var_answer2.get())+
  585.                 str(self.var_answer3.get())+
  586.                 str(self.var_answer4.get())+
  587.                 str(self.var_answer5.get())+
  588.                 str(self.var_answer6.get())+
  589.                 str(self.var_answer7.get())+
  590.                 str(self.var_answer8.get())+
  591.                 str(self.var_answer9.get())+
  592.                 str(self.var_answer10.get())+
  593.                 str(self.var_answer11.get())+
  594.                 str(self.var_answer12.get()))
  595.                
  596.         gmail_user = self.emailstring.get()
  597.         gmail_pwd = self.passstring.get()
  598.         FROM = self.emailstring.get()
  599.         TO = [self.opponentstring.get()] #must be a list
  600.         SUBJECT = "Scattergories"
  601.         TEXT = 'score' + self.uniqueID.get() + str(self.round) + cseriesonoroff
  602.                
  603.  
  604.         # Prepare actual message
  605.         message = """\From: %s\nTo: %s\nSubject: %s\n\n%s
  606.        """ % (FROM, ", ".join(TO), SUBJECT, TEXT)
  607.         try:
  608.             #server = smtplib.SMTP(SERVER)
  609.             server = smtplib.SMTP("smtp.gmail.com", 587) #or port 465 doesn't seem to work!
  610.             server.ehlo()
  611.             server.starttls()
  612.             server.login(gmail_user, gmail_pwd)
  613.             server.sendmail(FROM, TO, message)
  614.             #server.quit()
  615.             server.close()
  616.             print 'successfully sent the mail'
  617.         except:
  618.             print "failed to send mail"
  619.  
  620.         self.retrieve_score()
  621.  
  622.     def retrieve_score(self):
  623.         mail = imaplib.IMAP4_SSL('imap.gmail.com')
  624.         mail.login(self.emailstring.get(), self.passstring.get())
  625.         mail.list()
  626.         mail.select('inbox')
  627.          
  628.         result, data = mail.uid('search', None, "ALL")
  629.         i = len(data[0].split())
  630.         upper=len(self.uniqueID.get())+5
  631.         for x in range(i-1,i-12,-1):
  632.             latest_email_uid = data[0].split()[x]
  633.             result, email_data = mail.uid('fetch', latest_email_uid, '(RFC822)')
  634.             raw_email = email_data[0][1]
  635.             try:
  636.                 raw_email_string = raw_email.decode('utf-8')
  637.                 email_message = email.message_from_string(raw_email_string)
  638.             except Exception:
  639.                 continue
  640.             for part in email_message.walk():
  641.                 if part.get_content_type() == "text/plain":
  642.                     body = part.get_payload(decode=True)
  643.                     if str(body)[0:upper+1]=="score"+self.uniqueID.get()+str(self.round):
  644.                         self.checkedanswers = str(body)[upper+1:]
  645.                         self.displaywhich()
  646.                         return None
  647.                 else:
  648.                     continue
  649.  
  650.     def displaywhich(self):
  651.         print self.checkedanswers
  652.         self.theirtally = sum(int(i) for i in (self.checkedanswers).strip())
  653.                                        
  654.         if self.checkedanswers[0] == '1':
  655.                 self.answer1label.config(bg='green')
  656.         if self.checkedanswers[1] == '1':
  657.                 self.answer2label.config(bg='green')
  658.         if self.checkedanswers[2] == '1':
  659.                 self.answer3label.config(bg='green')
  660.         if self.checkedanswers[3] == '1':
  661.                 self.answer4label.config(bg='green')
  662.         if self.checkedanswers[4] == '1':
  663.                 self.answer5label.config(bg='green')
  664.         if self.checkedanswers[5] == '1':
  665.                 self.answer6label.config(bg='green')        
  666.         if self.checkedanswers[6] == '1':
  667.                 self.answer7label.config(bg='green')
  668.         if self.checkedanswers[7] == '1':
  669.                 self.answer8label.config(bg='green')
  670.         if self.checkedanswers[8] == '1':
  671.                 self.answer9label.config(bg='green')
  672.         if self.checkedanswers[9] == '1':
  673.                 self.answer10label.config(bg='green')
  674.         if self.checkedanswers[10] == '1':
  675.                 self.answer11label.config(bg='green')
  676.         if self.checkedanswers[11] == '1':
  677.                 self.answer12label.config(bg='green')                
  678.  
  679.         self.createtallylabel()
  680.  
  681.     def clear_highlights(self):
  682.         try:
  683.             self.answer1label.config(bg='#f0f0f0')
  684.             self.answer2label.config(bg='#f0f0f0')
  685.             self.answer3label.config(bg='#f0f0f0')
  686.             self.answer4label.config(bg='#f0f0f0')
  687.             self.answer5label.config(bg='#f0f0f0')
  688.             self.answer6label.config(bg='#f0f0f0')
  689.             self.answer7label.config(bg='#f0f0f0')
  690.             self.answer8label.config(bg='#f0f0f0')
  691.             self.answer9label.config(bg='#f0f0f0')
  692.             self.answer10label.config(bg='#f0f0f0')
  693.             self.answer11label.config(bg='#f0f0f0')
  694.             self.answer12label.config(bg='#f0f0f0')
  695.         except:
  696.             pass
  697.  
  698.        
  699.        
  700. root = Tkinter.Tk()
  701. app = Scattergories(master=root)
  702. app.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement