def final_res(ipusn): view=Gui() view.title('view results') fin=open('RES.txt') usn_gpa={} #an dictionary with usn as key and gpa as items name_usn={} gpa_usn={} #an dictionary with gpa as key and usn as items linesplit=[] #an empty list gpaacc=[] #a list to store all the gpas usnacc=[] #a list to store all the usn usn_name={} #a dictionary to map usn to names for line in fin: linesplit=line.split(' ') #reads the line and splits it into list of strings gpa=gpa_calc(linesplit) #sends the whole list to the function usn_gpa[linesplit[1]]=gpa #stores the gpa in a dictionary database usnacc.append(linesplit[1]) #stores the usn into a usn accumilator dell=' ' usn_name[linesplit[1]]=dell.join(linesplit[2:-18]) #extracts the name from the line if gpa in gpa_usn: #store all the usns with same GPAs under the GPA key gpa_usn[gpa].append(linesplit[1]) else: gpa_usn[gpa]=[linesplit[1]] if gpa not in gpaacc: #store gpa into gpaacc if it is not in the list gpaacc.append(gpa) gpaacc.sort(reverse=True) #sort the gpa acc for finding the rank if ipusn not in usnacc: view.la(text='Invalid USN\n Make sure you have entered the USN correctly') gpa2=usn_gpa[ipusn] #get the gpa of the student whose usn is taken as input for i in range(len(gpaacc)): #find the rank if gpaacc[i]==gpa2: rank=i+1 view.row() view.col() view.la(text='Hello %s' %usn_name[ipusn]) view.la(text='Your SGPA is %s' %gpa2) view.la(text='Your SGPA position is %i: ' %rank) view.endcol() gpa_usn[gpa2].remove(ipusn) view.col(padx=50) view.la(text='Your SGPA is tied with %s students' %len(gpa_usn[gpa2])) view.col(pady=50) view.col(padx=5) for u in gpa_usn[gpa2]: var='%s (%s)' %(usn_name[u], u) view.la(text=var) view.col(pady=5)
vec = Vector(item) ca.bind("<ButtonPress-1>", vec.select) def make_circle(event): """Makes a circle item at the location of a button press.""" dx = event.x dy = event.y pos = ca.canvas_coords([[event.x, event.y], [event.x + 10, event.y + 10]]) print pos item = ca.rectangle(pos, fill="red") item = Vector(item) ca.bind("<ButtonPress-3>", make_circle) def make_text(event=None): """Pressing Return in the Entry makes a text item.""" text = en.get() item = ca.text([0, 0], text) item = Vector(item) g.row([0, 1]) bu = g.bu("Make text item:", make_text) en = g.en() en.bind("<Return>", make_text) g.mainloop()
def ab_app(): abapp=Gui() abapp.row([0,1]) abapp.la(text='This is an app developed to analyse the results of \n BMS College of Engineering, Grading system ')
def res(): u=entry.get() #get the entry from the txt field(input USN) final_res(u.upper()) #pass the usn into the function win = Gui() #initialise a win object win.title('GPA Analysis') win.row() logo1=PIL.open('logo.png') logo=ImageTk.PhotoImage(logo1) win.la(image=logo) win.row([0,0], padx=50) win.la(text='Analysing 4th sem, ECE results \n of the year 2014') win.col() win.bu(text='About the app', command=ab_app) win.bu(text='About the Developer', command=ab_dev) win.la(text='Kindly mail your feedback to \n [email protected]') win.endcol() win.col([0,3],pady=70,padx=50) win.la(text='Enter your USN') entry=win.en(text='1BM12EC129') win.bu(text='View result analysis', command=res) #function res is invoked when the bu is clicked win.endcol()
self.dragy = event.y self.move(dx, dy) def drop(self, event): self.config(fill=self.fill) def make_circle(event): pos = ca.canvas_coords([event.x, event.y]) item = ca.circle(pos, 5, fill='white') Draggable(item) def make_text(event=None): text = en.get() item = ca.text([0,0], text) Draggable(item) g = Gui() g.title('Draggable Demo') ca = g.ca(width=500, height=500, bg='black') ca.bind('<ButtonPress-3>', make_circle) g.row([1,0]) en = g.en() bu = g.bu('Make text item:', make_text) en.bind('<Return>', make_text) g.mainloop()
Swampy; you can download it from thinkpython.com/swampy. This program demonstrates how to use the Gui module to create and operate on Tkinter widgets. The documentation for the widgets is at http://www.pythonware.com/library/tkinter/introduction/ """ from swampy.Gui import * # create the Gui: the debug flag makes the frames visible g = Gui(debug=False) # the topmost structure is a row of widgets g.row() # FRAME 1 # the first frame is a column of widgets g.col() # la is for label la1 = g.la(text='This is a label.') # en is for entry en = g.en() en.insert(END, 'This is an entry widget.') la2 = g.la(text='')
def main(): client = MongoClient() db = client.test_database users = db.users users.remove() print users users.insert({'user':'******', 'password':'******'}) for thing in users.find(): print thing def newusergui(): def close(): signupgui.quit() def newuser(): for user in users.find(): for info in user: print info print user[info] if user[info]==newusername.get(): print 'already in use' label.config(text="That username is already in use.") return if newpassword.get()==repeatnewpassword.get(): print 'running this loop' users.insert({'user':newusername.get(), 'password': newpassword.get()}) print users label.config(text="Thank you for signing up!") close() launch() return True else: label.config(text="Your passwords don't match! Please try again") usernamelabel=signupgui.la(text='Username:'******'Password:'******'*') repeatpasswordlabel=signupgui.la(text='Re-enter Password') repeatnewpassword=signupgui.en(show='*') button=signupgui.bu(text="Let's get started!",command=newuser) label=signupgui.la() def logingui(): def close(): for user in users.find(): for info in user: if password.get()==user[info]: label.config(text= "You are now logged in!") signupgui.quit() launch() return True else: label.config(text= "We do not recognize your username or password, please try again.") usernamelabel=signupgui.la(text = "MusicSwAPPer Username: "******"MusicSwAPPer Password: "******"Let's get started!",command=close) label=signupgui.la() signupgui=Gui() signupgui.title('MusicSwAPPer Sign Up') signuporlogin = signupgui.la(text = 'Please Sign-In or Sign-Up!') signupgui.row() login = signupgui.bu(text = 'Sign in', command=logingui) sign = signupgui.bu(text = 'Sign up', command=newusergui) signupgui.endrow() signupgui.mainloop()
Swampy; you can download it from thinkpython.com/swampy. This program demonstrates how to use the Gui module to create and operate on Tkinter widgets. The documentation for the widgets is at http://www.pythonware.com/library/tkinter/introduction/ """ from swampy.Gui import * # create the Gui: the debug flag makes the frames visible g = Gui(debug=False) # the topmost structure is a row of widgets g.row() # FRAME 1 # the first frame is a column of widgets g.col() # la is for label la1 = g.la(text="This is a label.") # en is for entry en = g.en() en.insert(END, "This is an entry widget.") la2 = g.la(text="")
# create the Gui and the Canvas g = Gui() ca = g.ca(width=500, height=500, bg='white') def make_circle(event): """Makes a circle item at the location of a button press.""" pos = ca.canvas_coords([event.x, event.y]) item = ca.circle(pos, 5, fill='red') item = Draggable(item) ca.bind('<ButtonPress-3>', make_circle) def make_text(event=None): """Pressing Return in the Entry makes a text item.""" text = en.get() item = ca.text([0, 0], text) item = Draggable(item) g.row([0, 1]) bu = g.bu('Make text item:', make_text) en = g.en() en.bind('<Return>', make_text) g.mainloop()
def main(): """ Launches login system everytime the script is run, users have the option of signing in, or signing up if they have not already established an account and accout information. Upon login/signup, the main application is launched """ def newusergui(): """ for anyone who needs to register, this adds them to the database system """ def newuser(): global username for user in users.find(): for info in user: if user[info]==newusername.get(): label.config(text="That username is already in use.") return if newpassword.get()==repeatnewpassword.get(): users.insert({'user':newusername.get(), 'password': newpassword.get()}) db.add_user(newusername.get(), newpassword.get()) label.config(text="Thank you for signing up!") username = newusername.get() launch() else: label.config(text="Your passwords don't match! Please try again") usernamelabel=g.la(text='Username:'******'Password:'******'*') repeatpasswordlabel=g.la(text='Re-enter Password') repeatnewpassword=g.en(show='*') button=g.bu(text="Let's get started!",command=newuser) label=g.la() def logingui(): """ this launches the general sign-in gui for those who have registered """ def close(): global username for user in users.find(): if password.get()==user['password'] and usernameentry.get() == user['user']: label.config(text= "You are now logged in!") username = usernameentry.get() g.quit() launch() return True else: label.config(text= "We do not recognize your username or password, please try again.") usernamelabel=g.la(text = "MusicSwAPPer Username: "******"MusicSwAPPer Password: "******"Let's get started!",command=close) label=g.la() g=Gui() g.title('Launch MusicSwAPPer') signuporlogin = g.la(text = 'Please Sign-In or Sign-Up!') g.row() login = g.bu(text = 'Sign in', command=logingui) sign = g.bu(text = 'Sign up', command=newusergui) g.endrow() g.mainloop()
def launch(): """ launches the 'real' gui system, the one we interact with """ #names new databases that we will use now that the application is launched share_hist = db.share_hist display = db.display point_total = db.point_total shared_source = db.shared_source shared_viewer = db.shared_viewer #clears the databases upon running script #IMPORTANT: leave the shared_viewer.remove() shared_viewer.remove() def initialize(): """ upon running the script, gets data from the database and updates the gui displays """ global count global share_count global username try: for thing in point_total.distinct(username): amount = thing points.config(text = str(amount)) except: point_total.insert({username:10}) for thing in point_total.distinct(username): amount = thing points.config(text = str(amount)) for thing in display.distinct(username): share_history.canvas.text([0,count], text = thing['friend'] + ' ' + thing['share'] + ' ' + str(thing['date'])) count -= 12 for thing in shared_viewer.distinct(username): link = new_shared_list.canvas.text([0,share_count], text = str(thing[username]['link']), activefill = 'blue') link.bind('<Double-1>', onObjectClick) share_count -= 12 def update(): """ when the update button is pushed, this looks at the database, and will print things not already in the display, as well as log displayed data (meaning that if the gui closes before update is pressed, the data is still saved, and will be displayed the next time update will be pressed) """ global count global username for log in share_hist.find(): if log not in display.find(): display.insert(log) share_history.canvas.text([0,count], text = log[username]['friend'] + ' ' + log[username]['share'] + ' ' + str(log[username]['date'])) count -= 12 get_new_shares() def print_entry(): """ Allows shares to be made, will check to make sure nothing is a repeat, will log the data. Interactive with the user. """ global count global username res = [] text = en.get() connection = friend.get() for user in users.find(): res.append(user['user']) if connection not in res: label.config(text = 'Sorry, user not in our records') return follower = ' was shared with ' message = text + follower + connection + '!' for thing in point_total.distinct(username): existing = thing point_total.update({username: existing}, {'$inc': {username:(-1)}}) points.config(text = str(existing-1)) if count == 1: t = datetime.datetime.now() if t.minute < 10: minute = '0'+str(t.minute) else: minute = str(t.minute) timestamp = str(t.month) + '/' + str(t.day) +'/' + str(t.year) + ',' +str(t.hour) + ':' + minute share_hist.insert({username:{'friend':connection,'share':text, 'date': timestamp}}) shared_source.insert({connection:{'link': text, 'friend':username}}) label.config(text = message) count -= 12 else: instance_count = 0 for instance in share_hist.distinct(username): if text == instance['share'] and connection == instance['friend']: label.config(text = 'That is a repeat!') return instance_count += 1 if instance_count == len(share_hist.distinct(username)): t = datetime.datetime.now() if t.minute < 10: minute = '0'+str(t.minute) else: minute = str(t.minute) timestamp = str(t.month) + '/' + str(t.day) +'/' + str(t.year) + ',' +str(t.hour) + ':' + minute share_hist.insert({username:{'friend':connection,'share':text, 'date': timestamp}}) shared_source.insert({connection:{'link': text, 'friend':username}}) label.config(text = message) def url_display(url): """ downloads a youtube video into a file, then plays that file within the gui space url - raw string url from gui input """ myfile="playingvid.mp4" try: os.remove(myfile) except OSError: k=2 os.system('youtube-dl -o playingvid.mp4 %s'%url) gobject.threads_init() window_id = canvas.winfo_id() player = gst.element_factory_make('playbin2', 'player') player.set_property('video-sink', None) x=os.path.dirname(os.path.realpath(__file__)) player.set_property('uri', 'file://%s/playingvid.mp4'%(x)) player.set_state(gst.STATE_PLAYING) bus = player.get_bus() bus.add_signal_watch() bus.enable_sync_message_emission() bus.connect('sync-message::element', on_sync_message, window_id) def on_sync_message(bus, message, window_id): if not message.structure is None: if message.structure.get_name() == 'prepare-xwindow-id': image_sink = message.src image_sink.set_property('force-aspect-ratio', True) image_sink.set_xwindow_id(window_id) def add_link(new_link): """ adds a link to the shared_viewer display """ return shared_viewer.insert(new_link) def get_new_shares(): """ will update the recieved, or shared_viewer display """ global share_count global username for i in shared_source.distinct(username): if i['link'] not in shared_viewer.distinct('link'): add_link(i) link = new_shared_list.canvas.text([0,share_count], text = str(i['link']), activefill = 'blue') link.bind('<Double-1>', onObjectClick) share_count -= 12 def onObjectClick(event): """ allows us to double click on a link and show it, as well as remove it from the list of need to view links """ global username for thing in point_total.find(): for key in thing: if key == username: existing = thing[username] point_total.update({username: existing}, {'$inc': {username:1}}) points.config(text = str(existing + 1)) index = event.widget.find_closest(event.x, event.y) i = shared_viewer.find() access = i[index[0] - 1] link = access['link'] url_display(link) shared_source.remove({username: {'link':access['link'], 'friend':access['friend']}}) #General set-up pretty = 'light cyan' gui = Gui() gui.title('MusicswAPPer') gui.row() gui.la(text = 'Welcome to the swAPP', bg = 'black', fg='cyan', justify = 'left', font = ('Times', 20, 'bold italic'), height = 2, relief = 'groove') gui.endrow() gui.row(bg=pretty) gui.col(bg=pretty) gui.bu(text = 'Refresh', fg = 'forest green', font = ('Times', 15, 'bold'), bg=pretty, activeforeground='forest green', activebackground='powder blue', command = update) gui.row([0,1], pady = 10, bg=pretty) gui.endrow() gui.la(text = 'Share a link', bg = pretty, font = ('Times', 13, 'italic'), anchor = 'left', justify='left') friend = gui.en(text = 'Who do you want to share with?', disabledforeground = 'light gray', fg = 'black', font = ('Times', 12)) en = gui.en(text = 'Insert URL here', font = ('Times', 12)) gui.bu(text = 'Share', font = ('Times', 15, 'bold'), bg = pretty, fg = 'forest green', activebackground = 'powder blue', activeforeground = 'forest green', command = print_entry) label = gui.la(bg=pretty, font=('Times', 11)) gui.row([0,1], pady = 10, bg=pretty) gui.endrow() gui.la(text = 'Share history', bg=pretty, font=('Times',13, 'italic')) share_history = gui.sc(width = 500, height = 300) share_history.canvas.configure(confine = False, scrollregion = (0,0,1000,1000)) gui.endcol() gui.col(bg=pretty) gui.ca(height = 100, width = 5, bg=pretty, bd=0) gui.endcol() gui.col(bg=pretty) gui.ca(height = 10, width = 5, bg=pretty, bd=0) gui.ca(height = 10, width = 5, bg='black',bd=0) gui.ca(height = 10, width = 5, bg=pretty,bd=0) gui.ca(height = 10, width = 5, bg='black',bd=0) gui.ca(height = 10, width = 5, bg=pretty,bd=0) gui.ca(height = 10, width = 5, bg='black',bd=0) gui.ca(height = 10, width = 5, bg=pretty,bd=0) gui.ca(height = 10, width = 5, bg='black',bd=0) gui.ca(height = 10, width = 5, bg=pretty,bd=0) gui.endcol() gui.col(bg=pretty) gui.ca(height = 100, width = 5, bg=pretty) gui.endcol() gui.col(bg=pretty) gui.la(text = 'New Shares from Friends', bg = pretty, font=('Times', 13, 'italic')) new_shared_list = gui.sc(width = 500, height = 100) new_shared_list.canvas.configure(confine = False, scrollregion = (0,0,1000,1000)) gui.row([0,1], pady = 30, bg=pretty) gui.endrow() gui.la(text = 'Viewer', bg=pretty, font = ('Times', 13, 'italic')) canvas = gui.ca(width = 500, height = 300, bg='black') canvas.configure(confine = False, scrollregion = (0,0,2000, 2000)) points = gui.la(bg=pretty) gui.endcol() gui.col(bg=pretty) gui.ca(height = 100, width = 5, bg=pretty) gui.endcol() gui.endrow() initialize() gui.mainloop()
for thing in point_total.find(): existing = thing['points'] point_total.update({'points': existing}, {'$set': {'points':existing+1}}) points.config(text = str(existing + 1)) index = event.widget.find_closest(event.x, event.y) i = shared_viewer.find() access = i[index[0] - 1] link = access['link'] url_display(link) shared_viewer.remove(access) shared_source.remove(access) #General set-up g.title('Minumum Deliverable URLSender') g.row() g.col() g.la(text = 'Welcome to musicswAPPer') g.bu(text = 'Update Data', command = MediaShare.update()) g.row([0,1], pady = 10) g.endrow() g.la(text = 'Share a link!') friend = g.en(text = 'Who do you want to share with?') en = g.en(text = 'Insert URL here') g.bu(text = 'Share', command = MediaShare.print_entry()) label = g.la() g.row([0,1], pady = 10) g.endrow()
self.move(dx, dy) def drop(self, event): self.config(fill=self.fill) def make_circle(event): pos = ca.canvas_coords([event.x, event.y]) item = ca.circle(pos, 5, fill='white') Draggable(item) def make_text(event=None): text = en.get() item = ca.text([0, 0], text) Draggable(item) g = Gui() g.title('Draggable Demo') ca = g.ca(width=500, height=500, bg='black') ca.bind('<ButtonPress-3>', make_circle) g.row([1, 0]) en = g.en() bu = g.bu('Make text item:', make_text) en.bind('<Return>', make_text) g.mainloop()