I am looking for coding suggestions to refresh the GUI on a continuous basis with out making load on the server basically I want it to update with out calling select unless an entry has been made in the database
Here is the entire code
Code: Select all
from Tkinter import *
import threading
##import socket
import MySQLdb
db = MySQLdb.connect("localhost", user="root", passwd="mypass",
db="chatsystem")
cursor = db.cursor()
class App:
def __init__(self, master):
self.framettext = Frame(master)
self.scrollbar = Scrollbar(self.framettext)
self.scrollbar.pack(side=RIGHT, fill=Y, expand=True)
self.textbox = Text(self.framettext)
self.textbox.pack(fill=BOTH, expand=True)
self.textbox.config(yscrollcommand=self.scrollbar.set)
self.scrollbar.config(command=self.textbox.yview)
self.framettext.pack(fill=BOTH, expand=True)
self.frame = Frame(master)
self.sendtext=Entry(self.frame)
self.sendtext.pack(side=LEFT, fill=X, expand=True)
self.send=Button(self.frame, text='Send Message', command=self.senddata)
self.send.pack(side=LEFT)
self.frame.pack(fill=X, expand=True)
self.frameu = Frame(master)
self.useridit = Entry(self.frameu)
self.useridit.pack(side=LEFT, fill=X, expand=True)
self.label = Label(self.frameu, text="Username")
self.label.pack(side=LEFT)
self.passwordidit = Entry(self.frameu)
self.passwordidit.pack(side=LEFT, fill=X, expand=True)
self.label = Label(self.frameu, text="Password")
self.label.pack(side=LEFT)
self.login=Button(self.frameu, text='Login', command=self.loginit)
self.login.pack(side=LEFT)
self.newit=Button(self.frameu, text='New User', command=self.newuser)
self.newit.pack(side=LEFT)
self.frameu.pack(fill=X, expand=True)
################################################################################
def newuser(self):
self.new = Toplevel(root)
self.frameu = Frame(self.new)
self.useridentry = Entry(self.frameu)
self.useridentry.pack(side=LEFT, fill=X, expand=True)
self.label = Label(self.frameu, text="Please Enter Your User ID Here")
self.label.pack(side=LEFT)
self.frameu.pack(fill=X, expand=True)
self.frameu2 = Frame(self.new)
self.passwordit = Entry(self.frameu2)
self.passwordit.pack(side=LEFT, fill=X, expand=True)
self.label = Label(self.frameu2, text="Please Enter Your Password Here")
self.label.pack(side=LEFT)
self.frameu2.pack(fill=X, expand=True)
self.frameu3 = Frame(self.new)
self.submit=Button(self.frameu3, text='Submit', command=self.assignuser)
self.submit.pack(side=LEFT)
self.frameu3.pack()
def assignuser(self):
userid = str(self.useridentry.get())
password = str(self.passwordit.get())
if userid or password == "":
pass
cursor.execute("INSERT INTO info (userid, password) VALUES (%s, %s)", (str(userid), str(password)))
cursor.execute("commit")
self.textbox.insert(END, "User Assigned\n")
def loginit(self):
global useridlogin
useridlogin = str(self.useridit.get())
global passwordlogin
passwordlogin = str(self.passwordidit.get())
if useridlogin or passwordlogin == "":
pass
try:
cursor.execute("SELECT * FROM info WHERE userid = (%s) and password = (%s)", (str(useridlogin), str(passwordlogin)))
cursor.execute("commit")
self.textbox.insert(END, "You are logged in as " + useridelogin +"\n\n")
except:
self.textbox.insert(END, "Invalid username or password, please try again\n")
def senddata(self):
self.sendit = self.sendtext.get()
try:
if useridlogin == "":
pass
else:
cursor.execute("INSERT INTO ddchat (userid, message) VALUES (%s, %s)", (str(useridlogin), str(self.sendit)))
cursor.execute("commit")
self.refresh()
except:
self.textbox.insert(END, "Please Login First\n")
self.sendtext.delete(0, END)
def refreshchat(self):
self.textbox.delete(0.0, END)
cursor.execute("select * from ddchat")
result = cursor.fetchall()
# iterate through resultset
for record in result:
self.textbox.insert(0.0, record[1] + ": " + record[2] + "\n")
def refresh(self):
self.refreshchat()
root = Tk()
root.title("Mabs MySQL Chat Tool")
root.wm_resizable(0, 0)
root.wm_iconbitmap("shinobi.ico")
root.option_readfile("optionDB")
app = App(root)
root.mainloop()