T
k
i
n
t
e
r
学
习
系
列
Tkinter学习系列
T k i n t e r 学 习 系 列
二 Tkinter事件绑定
四 python文件操作
五 Tkinter数据库操作
实例
读取txt
def load_file_info ( self) :
if not os. path. exists ( self. file_path) :
showinfo ( "系统消息" , "提供的文件名不存在!" )
else :
try :
with open ( file= self. file_path, mode= "r" ) as fd:
# 读取第一行
current_line = fd. readline ( )
while current_line:
temp_list = current_line. split ( "," )
self. user_list. append ( temp_list)
# 读取下一行
current_line = fd. readline ( )
except:
showinfo ( "系统消息" , "文件读取出现异常!" )
写入txt
def write_file_info ( self) :
# 1. 清空文件, 2. 写入
try :
with open ( file= self. file_path, mode= "w" ) as fd:
fd. write ( "" )
with open ( file= self. file_path, mode= "a" ) as fd:
for item in self. user_list:
fd. write ( "," . join ( item) )
except:
showinfo ( "系统消息" , "写入文件出现异常!" )
初始一个界面展示
from tkinter import *
class LoginWindow ( ) :
def __init__ ( self) :
self. frame = Tk ( )
self. frame. title ( "登录界面" )
self. frame. geometry ( "600x400" )
def show ( self) :
self. frame. mainloop ( )
if __name__ == '__main__' :
this_login = LoginWindow ( )
this_login. show ( )
from tkinter import *
from tkinter. ttk import *
class LoginWindow ( Tk) :
def __init__ ( self) :
super ( ) . __init__ ( )
self. title ( "登录界面" )
self. geometry ( "600x400" )
if __name__ == '__main__' :
this_login = LoginWindow ( )
this_login. mainloop ( )
按钮绑定事件
from tkinter import *
from tkinter import messagebox
root = Tk ( )
# 挂载在界面上
btn1 = Button ( root)
btn1[ "text" ] = "确定"
# 布局
btn1. pack ( )
def test1 ( e) :
messagebox. showinfo ( "Message" , "tttttttttttttttttttt" )
print ( "ssssssssss" )
# 绑定函数("<Button-1>" :事件左击)
btn1. bind ( "<Button-1>" , test1)
root. mainloop ( )
基本GUI设计
from tkinter import *
from tkinter. ttk import *
class LoginWindow ( Tk) :
def __init__ ( self) :
super ( ) . __init__ ( )
self. title ( "登录界面" ) # 设置界面标题
self. geometry ( "600x400" ) # 设置登录界面长宽
self. resizable ( 0 , 0 ) # 禁止改变窗体大小
self. iconbitmap ( ".//img//student.ico" ) # 设置窗体图标
# 加载窗体
self. setup_ui ( )
self[ "bg" ] = "RoyalBlue"
def setup_ui ( self) :
self. Login_image = PhotoImage ( file= "./img/stu_login_png02.png" )
self. Label_image = Label ( self, image = self. Login_image)
self. Label_image. pack ( )
self. Label_user = Label ( self, text= "用户名:" ) . pack ( side = LEFT, padx= 10 , pady= 10 )
self. Entry_user = Entry ( self, width= 10 ) . pack ( side = LEFT, padx= 10 , pady= 10 )
self. Label_password = Label ( self, text= "密码:" ) . pack ( side = LEFT, padx= 10 , pady= 10 )
self. Entry_password = Entry ( self, width= 10 ) . pack ( side = LEFT, padx= 10 , pady= 10 )
self. Button_login = Button ( self, text= "登录" ) . pack ( side = LEFT, padx= 10 , pady= 10 )
if __name__ == '__main__' :
this_login = LoginWindow ( )
this_login. mainloop ( )
加载txt
from tkinter import *
from tkinter. ttk import *
import os
from tkinter. messagebox import *
class LoginWindow ( Tk) :
def __init__ ( self) :
super ( ) . __init__ ( )
self. title ( "登录界面" ) # 设置界面标题
self. geometry ( "600x400+500+300" ) # 设置登录界面长宽, 和显示位置
self. resizable ( 0 , 0 ) # 禁止改变窗体大小
self. iconbitmap ( ".//img//student.ico" ) # 设置窗体图标
self[ "bg" ] = "RoyalBlue" # 设置窗口背景
# 加载窗体
self. setup_ui ( )
# 定义变量
self. file_path = "student.txt"
self. user_list = [ ]
# 自动执行文件中账号的加载
self. load_file_info ( )
def setup_ui ( self) :
self. Login_image = PhotoImage ( file= "./img/stu_login_png02.png" )
self. Label_image = Label ( self, image = self. Login_image)
self. Label_image. pack ( )
self. Label_user = Label ( self, text= "用户名:" ) . pack ( side = LEFT, padx= 10 , pady= 10 )
self. Entry_user = Entry ( self, width= 10 ) . pack ( side = LEFT, padx= 10 , pady= 10 )
self. Label_password = Label ( self, text= "密码:" ) . pack ( side = LEFT, padx= 10 , pady= 10 )
self. Entry_password = Entry ( self, width= 10 ) . pack ( side = LEFT, padx= 10 , pady= 10 )
self. Button_login = Button ( self, text= "登录" ) . pack ( side = LEFT, padx= 10 , pady= 10 )
def load_file_info ( self) :
if not os. path. exists ( self. file_path) :
showinfo ( "系统消息" , "文件不存在" )
else :
try :
with open ( file= self. file_path, mode= "r" ) as fd:
# 读取一行
current_line = fd. readline ( )
# 遍历所有行
while current_line:
temp_list = current_line. split ( "," )
self. user_list. append ( temp_list)
# 读取下一行
current_line = fd. readline ( )
except:
showinfo ( "系统消息" , "文件读取出现异常!" )
print ( self. user_list)
if __name__ == '__main__' :
this_login = LoginWindow ( )
this_login. mainloop ( )
打开另一个界面
from tkinter import *
from tkinter. ttk import *
import os
from tkinter. messagebox import *
import maingui
class LoginWindow ( Tk) :
def __init__ ( self) :
super ( ) . __init__ ( )
self. title ( "登录界面" ) # 设置界面标题
self. geometry ( "600x400+500+300" ) # 设置登录界面长宽, 和显示位置
self. resizable ( 0 , 0 ) # 禁止改变窗体大小
self. iconbitmap ( ".//img//student.ico" ) # 设置窗体图标
self[ "bg" ] = "RoyalBlue" # 设置窗口背景
# 加载窗体
self. setup_ui ( )
# 定义变量
self. file_path = "student.txt"
self. user_list = [ ]
# 自动执行文件中账号的加载
self. load_file_info ( )
def setup_ui ( self) :
self. Login_image = PhotoImage ( file= "./img/stu_login_png02.png" )
self. Label_image = Label ( self, image = self. Login_image)
self. Label_image. pack ( )
self. Label_user = Label ( self, text= "用户名:" ) . pack ( side = LEFT, padx= 10 , pady= 10 )
self. var_user = StringVar ( )
self. Entry_user = Entry ( self, width= 10 , textvariable = self. var_user) . pack ( side = LEFT, padx= 10 , pady= 10 )
self. Label_password = Label ( self, text= "密码:" ) . pack ( side = LEFT, padx= 10 , pady= 10 )
self. var_passward = StringVar ( )
self. Entry_password = Entry ( self, width= 10 , textvariable = self. var_passward) . pack ( side = LEFT, padx= 10 , pady= 10 )
self. Button_login = Button ( self, text= "登录" , command = self. login) . pack ( side = LEFT, padx= 10 , pady= 10 )
def load_file_info ( self) :
if not os. path. exists ( self. file_path) :
showinfo ( "系统消息" , "文件不存在" )
else :
try :
with open ( file= self. file_path, mode= "r" ) as fd:
# 读取一行
current_line = fd. readline ( )
# 遍历所有行
while current_line:
temp_list = current_line. split ( "," )
self. user_list. append ( temp_list)
# 读取下一行
current_line = fd. readline ( )
except:
showinfo ( "系统消息" , "文件读取出现异常!" )
print ( self. user_list)
def login ( self) :
# 获取输入的用户名和密码
user = self. var_user. get ( )
password = self. var_passward. get ( )
showinfo ( message= "用户名:" + user+ "\n密码:" + password)
if 1 :
self. load_main ( )
def load_main ( self) :
self. destroy ( )
main_window = maingui. MainWindow ( )
if __name__ == '__main__' :
this_login = LoginWindow ( )
this_login. mainloop ( )
被打开界面
from tkinter import *
from tkinter. ttk import *
class MainWindow ( Tk) :
def __init__ ( self) :
super ( ) . __init__ ( )
self. title ( "登录界面" )
self. geometry ( "600x400+200+200" )
if __name__ == '__main__' :
this_login = MainWindow ( )
this_login. mainloop ( )