tkinter 多窗口显示和先验证后登录软件界面的案例

#!/usr/bin/python3.7 
# -*- coding: utf-8 -*-  

import tkinter as tk
from tkinter import ttk #tk的部件进阶
from tkinter import scrolledtext #滚动条文本
from tkinter import Menu #菜单栏
from tkinter import messagebox as msg #消息弹框
from tkinter import Tk #
from tkinter import Spinbox #数字调整框

'''
	模块一 演示tkinter多窗口关闭 隐藏按钮 显示等相关操作
	模块二 演示一个先提示登录框 登录成功后显示登录页面的例子
'''

# ====================================================================
# 模块一 主窗体类的定义
# ====================================================================
class MulWindos():

	def __init__(self):
		self.win = Tk()
		self.win.title('多窗口操作')
		#self.win.attributes("-topmost",1) #窗口置顶
		self.win.geometry("200x400+250+250")
		

		#附带窗口的创建
		self.top = tk.Toplevel()
		#self.top.overrideredirect(1) #隐藏窗口的所有按钮 如关闭缩小等
		self.top.title('python3')
		self.top.withdraw()			#隐藏窗口
		#self.top.resizable(0, 0)  	#禁用最大化和自己调整大小
		self.top.attributes('-toolwindow', True)  #删除最大化 最小化按钮
		

		#调用创建部件函数
		self.create_widget()
		#绑定事件
		self.bind_event()

	# ================================================================
	# 创建部件
	# ================================================================
	def create_widget(self):

		ext_btn = ttk.Button(self.win, text='扩展功能>>>', width=40, 
			command=self.ext_featrues)
		ext_btn.grid(column=0, row=0, sticky='W', pady=20)

		hide_btn = ttk.Button(self.win, text='隐藏扩展<<<', width=40, 
			command=self.hide_featrues)
		hide_btn.grid(column=0, row=1, sticky='W', pady=20)
	# ================================================================
	# 绑定事件
	# ================================================================
	def bind_event(self):

		self.top.protocol("WM_DELETE_WINDOW", self.close_callback)
	# ================================================================
	# 按钮功能函数
	# ================================================================
	# 显示扩展窗口
	def ext_featrues(self):

		print('显示扩展窗口')
		# 普通弹出方式
		self.top.update()		#更新页面	
		self.top.deiconify()	#展示页面

		#指定显示的位置  宽 X 高 + X偏移 + Y偏移
		self.top.geometry("200x400+465+250")

		self.top.grab_set()		#设置为模态窗口
		
		# 飞入弹出方式
		#self.top.iconify()
		#self.top.deiconify()

	# 隐藏扩展窗口
	def hide_featrues(self):
		self.top.withdraw()		#取消页面

	# 窗口关闭两个窗口一起关闭
	def close_callback(self):

		if msg.askyesnocancel('取消登录','您确认要取消登录吗'):
			self.top.destroy()
			self.win.destroy()
		else:
			return

# ====================================================================
# 模块二 软件登录
# ====================================================================
class Login():

	def __init__(self):

		# 直接显示登录窗口
		self.win = Tk()
		self.win.title('抢班助手 -v1.0.0') # 设置标题

		login = self.create_login()  # 展示登录按钮

	# 登录窗口的定义
	def create_login(self):

		# 创建一个平面
		self.login_frame = tk.Frame(self.win)
		self.login_frame.grid(padx=15, pady=15)

		# 登录框 用户名和密码
		ttk.Label(self.login_frame, text='用户名').grid(column=1, row=1, 
			columnspan=2)
		self.username = ttk.Entry(self.login_frame)
		self.username.grid(column=3, row=1, columnspan=3)
 
		ttk.Label(self.login_frame, text='密码').grid(column=1, row=2, 
			columnspan=2)
		self.password = ttk.Entry(self.login_frame, show='*')
		self.password.grid(column=3,row=2,columnspan=3)

		# 登录框 注册和登录按钮
		ttk.Button(self.login_frame, text='注册', command=self.reg).grid(
			column=2, row=3, columnspan=2, pady=15)
		ttk.Button(self.login_frame, text='登录', command=self.cert).grid( 
			column=4, row=3, pady=15)

	# 主页面的定义
	def create_index(self):

		# 创建一个平面
		self.index_frame = tk.Frame(self.win)
		self.index_frame.grid()

		# 建立对应的标题
		ttk.Label(self.index_frame, 
			text='欢迎 hello 您的账户到期时间为 2020-12-31').grid(column=0, 
			row=0)

	# 登录按钮方法
	def cert(self):

		#获取账号名和密码
		username = self.username.get()
		password = self.password.get()

		print("username is : {} \n password is : {} ".format(username,
		 password))

		# 验证账号名和密码 
        # 可以用socket 或者 mysql数据库验证的方式登录 
        # 这里仅做最简单的验证操作
		if username == 'hello' and password == 'hello':
			print('验证通过')
			self.login_frame.destroy()	#销毁掉当前的登录页面
			self.create_index()			#创建登录页面
		else:
			msg.showerror('登录失败','账号或者密码错误')

	# 注册按钮方法
	def reg(self):
		reg_top = tk.Toplevel(self.login_frame)
		tk.Label(reg_top, text='用户注册').grid(column=2, row=2)

# ====================================================================
# 运行程序
# ====================================================================
mulwin = Login()
mulwin.win.mainloop()

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值