# Entry用来接收一行字符串的控件,如果用户输入的文字长度长于Entry控件的宽度时,文字会自动向后滚动。
# 如果想输入多行文本,需要使用Text控件
from tkinter import *
from tkinter import messagebox
class Application(Frame):
def __init__(self, master=None):
super().__init__(master) # super()代表的是父类的定义,而不是父类对象
self.master = master
self.pack()
self.creatWidget()
def creatWidget(self):
'''创造登入界面组件'''
self.label01 = Label(self, text='用户名')
self.label01.pack()
# StringVar变量绑定到指定的组件
# StringVar变量的值发生变化,组件内容也发生变化
# 组件内容发生变化,StringVar变量的值也发生变化
v1 = StringVar() # 可输入字符串类型
self.entry01 = Entry(self, textvariable=v1)
self.entry01.pack()
v1.set('admin') # 设置的默认值
print(v1.get());print(self.entry01.get())
# 创建密码框
self.label02 = Label(self, text='密码')
self.label02.pack()
v2 = StringVar()
self.entry02 = Entry(self, textvariable=v2, show='*') # show='*'输入内容时显示的是*,保护密码
self.entry02.pack()
self.btn01 = Button(self, text='登入', command=self.login)
self.btn01.pack()
def login(self):
username = self.entry01.get()
pwd = self.entry02.get()
print('比对用户名和密码')
print('用户名'+username) # 显示
print('密码' + pwd)
if username == '张三' and pwd == '123456':
messagebox.showinfo('登入', '今天不学习,明天变垃圾')
else:
messagebox.showinfo("登入", "登入失败,用户名或密码错误")
if __name__ == '__main__':
root = Tk()
root.geometry("400x130+200+300")
app = Application(master=root)
root.mainloop()