首页 > 编程语言 >登陆界面、学生信息记录界面——Python

登陆界面、学生信息记录界面——Python

时间:2023-01-02 23:13:36浏览次数:44  
标签:20 tkinter Python height width place 登陆 界面 root

Button  按钮

Canvas  画布、用于绘制直线、椭圆、多边形等形状

Checkbutton  复选框

Entry  单行文本框

Frame  框架,可以作为其它组建的容器,常用来对组件进行分组

Label  标签,常用来显示单行文本

Listbox  列表框

Menu  菜单

Message  多行文本标签

Radiobutton  单选按钮,同一组的单选按钮任何时刻都智能有一个处于选中状态

Scrollbar  滚动条

Toplevel  常用来创建新的窗口

 1、用户登陆界面

'''
用户登陆界面
'''
import os.path
import os
import tkinter
import tkinter.messagebox
#path它获取的不是系统路劲,二是系统盘下的
#可以单独测试一下   print(os.getenv('temp'))
path = os.getenv('temp')
filename = os.path.join(path,'info.txt')
#创建应用程序窗口
root = tkinter.Tk()
#定义窗口大小
'''
设置变量属性的3个方法
1、再属性的()里定义
2、root[]
3、root.config(text='gsad')
'''
root['height'] = 300
root['width'] = 500
#再创建标签组件
labelName = tkinter.Label(root,text='User Name:',justify=tkinter.RIGHT,width=180,bg='red')
labelName.place(x=10,y=5,width=80,height=20)

#创建字符串变量和文本框组件,同时设置关联的变量
#varName 十和entryName绑定的,也就是说,entryName输入值的时候,var就会变
varName = tkinter.StringVar(root,value='')
entryName = tkinter.Entry(root,width=80,textvariable=varName)
entryName.place(x=100,y=5,width=80,height=20)

#创建密码标签
labelPwd = tkinter.Label(root,text='User Pwd',justify=tkinter.RIGHT,anchor='e',width=80)
labelPwd.place(x=10,y=30,width=80,height=20)

#创建密码文本框
varPwd = tkinter.StringVar(root,value='')
entryPwd = tkinter.Entry(root,show='*',width=80,textvariable=varPwd)    #show是密码显示框的意思,输入密码隐藏
entryPwd.place(x=100,y=30,width=80,height=20)

#尝试自动填写用户名和密码
try:
    with open(filename) as fp:
        n,p = fp.read().strip().split(',')
        varName.set(n)
        varPwd.set(p)
except:
    print('文件不存在')
#Remember me复选框
rememberMe = tkinter.IntVar(root,value=1)
#选中时变量值为1,为选中时变量值为0,默认选中
checkRemember = tkinter.Checkbutton(root,text='Remember me?',variable=rememberMe,onvalue=1,offvalue=0)
checkRemember.place(x=30,y=70,width=120,height=20)

#登陆按钮事件处理函数
def login():
    #获取用户名和密码
    name = entryName.get()
    pwd = entryPwd.get()
    if name =='admin' and pwd == '123456':
        tkinter.messagebox.showinfo(title='恭喜',message='登陆成功')
        if rememberMe.get() == 1:
            #把登陆成功的信息写入临时文件
            with open(filename , 'w') as fp:
                fp.write(','.join((name,pwd)))
        else:
            try:
                os.remove(filename)
            except:
                pass
    else:
        tkinter.messagebox.showerror('警告',message='用户名或密码错误')

#创建按钮组件,同时设置按钮事件处理函数
buttonOk = tkinter.Button(root,text='Login',command=login)
buttonOk.place(x=30,y=100,width=50,height=20)
#取消按钮的事件处理函数
def cancel():
    #清空用户输入的用户名和密码
    varName.set('')
    varPwd.set('')
buttonCancel = tkinter.Button(root,text='Cancel',command=cancel)
buttonCancel.place(x=90,y=100,width=50,height=20)
#启动消息循环
root.mainloop()

2、创建一个包含文本框、单选按钮、复选框、组合框、按钮和列表框等组件的GUI应用程序
运行后输入姓名,并选择班级、年级、性别及其班长信息等,单机Add按钮,就可以把
学生信息添加道列表框中,

 

 

 

'''
创建一个包含文本框、单选按钮、复选框、组合框、按钮和列表框等组件的GUI应用程序
运行后输入姓名,并选择班级、年级、性别及其班长信息等,单机Add按钮,就可以把
学生信息添加道列表框中,
再列表框中选择一项后单机DeleteSelection按钮,可以将其从列表框中删除
没有选中任何项二单机按钮则提示NoSelect
'''
import tkinter
import tkinter.ttk
import tkinter.messagebox
root = tkinter.Tk()
root.title('学生信息选择框')
root['width']=320
root['height']=400
labelName = tkinter.Label(root,text='Name:',justify=tkinter.RIGHT,width=50)
labelName.place(x=10,y=5,width=50,height=20)
varName = tkinter.StringVar(value='')
entryName = tkinter.Entry(root,width=120,textvariable=varName)
entryName.place(x=70,y=5,width=120,height=20)

labelGrade = tkinter.Label(root,text='Grade:',justify=tkinter.RIGHT,width=50)
labelGrade.place(x=10,y=40,width=50,height=20)

studentClasses = {'1':['1','2','3','4'],'2':['1','2'],'3':['1','2','3']}
comboGrade = tkinter.ttk.Combobox(root,values=tuple(studentClasses.keys()),width=50)
comboGrade.place(x=70,y=40,width=50,height=20)

def comboChange(event):
    #获取comboGrade选项框里面的数据
    grade = comboGrade.get()
    if grade:
        comboClass["values"] = studentClasses.get(grade)
    else:
        comboClass.set([])
#绑定事件处理器函数
'''
geicomboGrade绑定了一个事件处理器(如果comboGrade被触发了,会调用comboChange()函数)
comboChange会给comboClass这个选项框的value属性,附上值
tkinter.ttk.Combobox()这里面是没有command这个属性的,所以采用事件的方式触发方法
注意,这个方法必须再这个事件的前面:因为代码由上往下执行,这个方法存在才能够被调用
'''
comboGrade.bind('<<ComboboxSelected>>',comboChange)
labelClass = tkinter.Label(root,text='Class',justify=tkinter.RIGHT,width=50)
labelClass.place(x=130,y=40,width=50,height=20)

comboClass = tkinter.ttk.Combobox(root,width=50)
comboClass.place(x=190,y=40,width=50,height=20)


labelSex = tkinter.Label(root,text='Sex:',justify=tkinter.RIGHT,width=50)
labelSex.place(x=10,y=70,width=50,height=20)

sex = tkinter.IntVar(value=1)
radioMan = tkinter.Radiobutton(root,variable=sex,value=1,text='Man')
radioMan.place(x=70,y=70,width=50,height=20)

radioWoman = tkinter.Radiobutton(root,variable=sex,value=0,text='Woman')
radioWoman.place(x=130,y=70,width=70,height=20)


monitor = tkinter.IntVar(value=1)
checkMonitor = tkinter.Checkbutton(root,text='Is Monitor?',variable=monitor,onvalue=1,offvalue=0)
checkMonitor.place(x=20,y=100,width=100,height=20)

def addInformation():
    result = 'Name:'+entryName.get()
    result = result+';Grade:'+comboGrade.get()
    result = result+';Class:'+comboClass.get()
    result = result+';Sex:'+('Man' if sex.get() else 'Woman')
    result = result+';Monitor:'+('Yes' if monitor.get() else 'Wonmen')
    listboxStudents.insert(0,result)
buttonAdd = tkinter.Button(root,text='Add',width=40,command=addInformation)
buttonAdd.place(x=130,y=100,width=40,height=20)

def deleteSelection():
    #返回当前所指定的索引
    selection = listboxStudents.curselection()
    if not selection:
        tkinter.messagebox.showinfo(title='Information',message='No Select')
    else:
        listboxStudents.delete(selection)
buttonDelete = tkinter.Button(root,text='DeleteSelection',width=100,command=deleteSelection)
buttonDelete.place(x=180,y=100,width=100,height=20)
listboxStudents = tkinter.Listbox(root,width=300)
listboxStudents.place(x=10,y=130,width=300,height=200)
root.mainloop()

 

标签:20,tkinter,Python,height,width,place,登陆,界面,root
From: https://www.cnblogs.com/buchijiuminvhai/p/17019287.html

相关文章

  • centos7 中 安装python 11
     001、查看系统[root@PC1~]#cat/etc/redhat-releaseCentOSLinuxrelease7.9.2009(Core)  002、安装环境依赖[root@PC1home]#yumgroupsmarkinstal......
  • 调试Python程序的几种方法总结
    程序能一次写完并正常运行的概率很小,基本不超过1%。总会有各种各样的bug需要修正。有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,......
  • Python图像处理库
    Pillow库为Python解释器添加了图像处理功能。它提供广泛的文件格式支持,高效的内部表示,以及相当强大的图像处理功能。功能特点图像存档Pillow库是写图像存档和图像批处理应用......
  • Python模块之dedent 删除字符串中的前导空格
    作用:删除字符串中的前导空格必要操作:>>>fromtextwrapimportdedent 帮助查看:>>>help(dedent)方法(函数):fromtextwrapimportdedenttext="""......
  • python中的print()
    python中的print函数有个end参数特别有用:1foriinrange(1,10):2forjinrange(1,i+1):3print(f'{j}*{i}={i*j}')4print()结果:......
  • Python 文件操作(IO 技术)
    目录Python文件操作(IO技术)文本文件和二进制文件文件操作相关模块概述建文件对象open()文本文件的写入write()/writelines()写入数据close()关闭文件流with语句(上下......
  • Smtp Oauth With Python
     我的博客园:https://www.cnblogs.com/CQman/GitHub#基于Python语言的smtpOauth连接世纪互联运营的Office365(或21VO365)的邮箱 AuthenticateanIMAP,POPorSM......
  • C++/python共享内存交换图片/文本信息
    共享内存保存读取图片OpenShare.cpp#include"OpenShare.h"//共享内存1,,C++发--python传递位姿与图像存储路径intkey_id=1111;intshmid;void*pBuffer;//共......
  • 用python爬取网络文章----滴天髓
    用python爬取网络文章真的很简单。主要分以下几个步骤1、安装并导入相关模块.这里我们要用到两个模块,分别是reqesets和lxml安装命令pipinstallrequests和pipinstall......
  • python+Django学习资源汇总-更新中
    ​​Python教程​​​​Python3.7.4文档​​​​Python基础教程​​​​Python教程​​​​Python入门​​ ​​python+django搭建web项目​​​​PythonDjango(WEB电......