前言
IDLE中并没有提供依靠拖动空间搭建窗体应用的环境,需要我们自己去了解一些调用系统接口的模块,从而去编写程序。
正文
1.tkinter
tkinter提供了众多控件
使用的一般规则为:
step1:引入模块
1 from tkinter import *
step2:实例化一个窗体,实例化控件,摆放控件
1 #窗体绘制 2 LoginFrom=Tk() 3 #实例化控件 4 lbl1=Label(LoginFrom,text="用户名") 5 lbl2=Label(LoginFrom,text="密码") 6 txt1=Entry(LoginFrom) 7 txt2=Entry(LoginFrom) 8 bttn1=Button(LoginFrom,text="登录",command=self.log) 9 bttn2=Button(LoginFrom,text="注册",command=self.regs) 10 #摆放控件,这里的摆放函数有多种如.grid(),.place()有自己的调整参数,这里简单摆放即可 11 lbl1.pack() 12 self.txt1.pack() 13 lbl2.pack() 14 self.txt2.pack() 15 bttn1.pack() 16 bttn2.pack() 17 #也可以这样直接摆放 18 Button(LoginFrom,text="查询",command=self.search).pack()
像label,Entry等简单控件实例化格式为: 控件名=控件类型(放在哪个窗体,显示内容="文字")
像button等控件需要在以上基础上指定一个函数事件command=函数名
这样就能运行出一个不那么美观的窗体
2.pymysql
pymysql是用于操作mysql数据库的模块,像.NET语言中的sqlclient
在使用之前要引入
import pymysql
剩下的事情由connect链接对象与cursor游标兑现完成
pymysql链接mysql数据库的步骤有
#指定链接参数新建connect对象 conn=pymysql.connect(host="localhost",\ user="root",password="root",database="newdb",charset="utf8") #新建cursor sql语句有关的对象 cursor = conn.cursor() #执行sql语句 sql="select * from admin" #返回执行状态 cursor.execute(sql) #获取数据 cursor.fetchall()
总文
源代码
from tkinter import * from tkinter import messagebox import pymysql class Frm: conn=pymysql.connect(host="localhost",\ user="root",password="root",database="newdb",charset="utf8") def __init__(self): LoginFrom=Tk()#窗体绘制 lbl1=Label(LoginFrom,text="用户名") lbl2=Label(LoginFrom,text="密码") self.txt1=Entry(LoginFrom) self.txt2=Entry(LoginFrom) bttn1=Button(LoginFrom,text="登录",command=self.log) bttn2=Button(LoginFrom,text="注册",command=self.regs) lbl1.pack() self.txt1.pack() lbl2.pack() self.txt2.pack() bttn1.pack() bttn2.pack() Button(LoginFrom,text="查询",command=self.search).pack() LoginFrom.mainloop() def search(self): cursor = self.conn.cursor() print(cursor) sql="select * from admin" cursor.execute(sql) print(cursor.fetchall()) cursor.close() def log(self): cursor = self.conn.cursor() print(cursor) sql="select * from admin where admin_name='"+self.txt1.get()+\ "'and admin_psw='"+self.txt2.get()+"'" if(cursor.execute(sql)): messagebox.showinfo("系统提示","登陆成功") else : messagebox.showerror("系统提示","账号或者密码错误") cursor.close() def regs(self): RegsFrom=Tk() lbl1=Label(RegsFrom,text="用户名") lbl2=Label(RegsFrom,text="密码") self.txt3=Entry(RegsFrom) self.txt4=Entry(RegsFrom) lbl1.pack() self.txt3.pack() lbl2.pack() self.txt4.pack() bttn3=Button(RegsFrom,text="点击注册",command=self.regsclick) bttn3.pack() def regsclick(self): cursor = self.conn.cursor() print(RegsFrom) print(cursor) sqlin="insert into admin(admin_name,admin_psw) VALUES(%s,%s)" data = [ (self.txt3.get(), self.txt4.get())] if(cursor.executemany(sqlin,data)): messagebox.showinfo("系统提示","注册成功") print(self.txt3.get()) #这一步是插入语句中至关重要的的一部分,查询语句可以没有但是插入更新删除等语句要有 self.conn.commit() cursor.close() def quit(frm): frm.destroy() if __name__=='__main__': a=Frm()
运行结果展示
按登录,由于没有写登录后的窗口只会提示这个
按注册
弹出新的窗体
注册功能
数据库中查看
查询--打印在控制台上