Tkinter模块GUI界面化编程实战(一)——登录界面(含详解及完整源码、完整程序下载链接)

本文章已在 2022/9/25 重制

Python Tkinter 超详细免费教程链接https://blog.csdn.net/weixin_62651706/category_11600888.html?spm=1001.2014.3001.5482这篇博客介绍了如何用Python Tkinter模块编写一个界面化的登录界面程序,在博客下面有完整的源码,源码中有超详细的注释,帮助大家理解代码(最后还有附件可以免费下载

【注:下载文件100%可以运行,因为下载文件中包含打包了的Python程序(exe文件)!】

【效果图】 

【用户登录界面】

【用户注册界面】

【提示界面】(展示一部分)

【登录成功提示】

【源代码】

下方有附件可免费下载

import random
import tkinter
import tkinter.messagebox
import tkinter.ttk

__author__ = '小康2022'

# NOTE: 2022/9/25 重制

root = tkinter.Tk()  # 创建主窗口
root.title('主窗口')  # 主窗口标题
root.geometry('0x0')  # 设置主窗口大小为 0
root.overrideredirect(True)  # 暂时隐藏主窗口外框

login = tkinter.Toplevel()  # 创建登录窗口
login.title('用户登录')  # 登录窗口的标题
login.geometry('250x200+500+250')  # 登录窗口的大小及位置
login.resizable(False, False)  # 设置登录窗口的大小不可改变

login.protocol('WM_DELETE_WINDOW', root.quit)  # 关闭Toplevel的同时,关闭主窗口

image = tkinter.PhotoImage(file='res/bg%s.png' % random.randint(0, 6))  # 随机选取一个图片
tkinter.Label(login, image=image, bd=0, text='登录窗口\n由Tkinter设计', compound='center', font=('华文行楷', 25), fg='yellow').place(width=250, height=100)  # 创建一个图片标签
tkinter.Label(login, text='用户').place(width=50, height=25, x=20, y=105)  # “用户”文字标签
tkinter.Label(login, text='密码').place(width=50, height=25, x=20, y=135)  # “密码”文字标签
(account := tkinter.ttk.Entry(login)).place(width=160, height=25, x=70, y=105)  # 用户名输入框
(password := tkinter.ttk.Entry(login, show='●')).place(width=160, height=25, x=70, y=135)  # 密码输入框
tkinter.ttk.Button(login, text='注册', command=lambda: toplevel_register()).place(width=100, height=28, x=20, y=166)  # 注册按钮
tkinter.ttk.Button(login, text='登录', command=lambda: test_for_password()).place(width=100, height=28, x=130, y=166)  # 登录按钮


def load_data():
    with open('res/data.csv', 'r') as infile:  # 打开文件
        return map(str.strip, infile.readlines())  # 返回处理后数据


def toplevel_register():
    register = tkinter.Toplevel(login)  # 创建注册窗口
    register.title('用户注册')  # 注册窗口标题
    register.geometry('250x125+500+300')  # 注册窗口大小及位置
    register.resizable(False, False)  # 设定注册窗口大小不可改变

    tkinter.Label(register, text='用户名').place(width=50, height=25, x=25, y=5)  # “用户名”文字标签
    tkinter.Label(register, text='新密码').place(width=50, height=25, x=25, y=35)  # “新密码”文字标签
    tkinter.Label(register, text='新密码').place(width=50, height=25, x=25, y=65)  # “重复新密码”文字标签
    (account := tkinter.ttk.Entry(register)).place(width=150, height=25, x=80, y=5)  # 新用户名输入框
    (password := tkinter.ttk.Entry(register, show='●')).place(width=150, height=25, x=80, y=35)  # 新密码输入框
    (password_ := tkinter.ttk.Entry(register, show='●')).place(width=150, height=25, x=80, y=65)  # 重复密码输入框
    tkinter.ttk.Button(register, text='注册', command=lambda: register_account()).place(width=100, height=27, x=20, y=94)  # 注册按钮
    tkinter.ttk.Button(register, text='取消', command=register.destroy).place(width=100, height=27, x=130, y=94)  # 登录按钮

    def register_account():
        if not (account.get() and password.get()):  # 用户名或密码为空
            tkinter.messagebox.showwarning('注册提示', '用户名或密码不可为空!')
        elif password.get() != password_.get():  # 两次密码不一致
            tkinter.messagebox.showwarning('注册提示', '两次密码不一致!')
        elif account.get() in [line.split(',')[0] for line in load_data()]:  # 用户名已被注册
            tkinter.messagebox.showerror('注册提示', '用户名已被注册!')
        else:  # 注册成功
            with open('res/data.csv', 'a') as infile:  # 打开文件
                infile.write('%s,%s\n' %(account.get(), password.get()))  # 写入信息
            tkinter.messagebox.showinfo('注册提示', '注册成功!')
            register.destroy()  # 关闭注册窗口


def test_for_password(count: list[int] = [0]):
    if not (account.get() and password.get()):  # 用户名或密码为空
        tkinter.messagebox.showwarning('登录提示', '用户名或密码不可为空!')
    elif account.get()+','+password.get() in load_data():  # 登录成功
        tkinter.messagebox.showinfo('登录提示', '登录成功!')
        login.destroy()  # 摧毁登录窗口
        root.overrideredirect(False)  # 显示主窗口外框
        root.geometry('960x540')  # 重新设置主窗口大小及位置
    else:  # 用户名或密码错误
        count[0] += 1  # 错误计数
        if count[0] < 5:  # 错误适量
            tkinter.messagebox.showerror('登录提示', '用户名或密码错误!')
        else:  # 错误过多
            tkinter.messagebox.showerror('登录提示', '已连续错误5次!\n请稍后再试!')
            root.quit()  # 退出窗口


root.mainloop()  # 窗口循环

        这里有个小技巧,因为主窗口只能有一个,而且主窗口一旦关闭,所有子窗口都将随之关闭,所以我这里的主窗口只能选择为登录后窗口,但是程序一旦打开主窗口就会一直保持打开状态,这不是我们想要的,我们想要的是登录成功后再关闭登录界面(一个子窗口),然后再让登录后的那个窗口打开,所以,这里用的方法是先让登录后窗口隐藏(是打开的,只是我们看不见) 


【 原创不易,大家都看到这里了,不如点个赞呗!

完整程序下载链接【蓝奏云登录界面.zip

下期内容Python Tkinter编写简易计算器

  • 19
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
### 回答1: tkinterPython的标准GUI库,它提供了创建图形用户界面的工具和功能。要设计漂亮的GUI界面,我们需要使用一些tkinter的内置组件和一些自定义的样式设置。以下是一个简单的示例源码,展示了如何设计一个漂亮的GUI界面: ```python import tkinter as tk from tkinter import ttk # 创建主窗口 window = tk.Tk() window.title("漂亮的GUI界面") window.geometry("300x200") # 创建标签和按钮 label = ttk.Label(window, text="欢迎使用漂亮的GUI界面!") label.pack(pady=10) button = ttk.Button(window, text="点击这里") button.pack(pady=10) # 设置样式 style = ttk.Style() style.configure("TLabel", font=("Arial", 12)) style.configure("TButton", font=("Arial", 12), foreground="white", background="#4caf50", padx=10, pady=5) style.map("TButton", foreground=[('active', 'white')], background=[('active', '#45a049')]) # 运行程序 window.mainloop() ``` 在这个源码中,我们使用了`ttk`模块替代了原生的`tkinter`模块,以获得更好的外观和功能。源码中的各个部分的功能如下: 1. 创建主窗口并设置标题和尺寸。 2. 创建标签和按钮,并设置它们的文本内容。 3. 使用`style`对象设置组件的样式,包括字体、前景色、背景色、内边距等。 4. 设置按钮的鼠标悬停样式。 5. 调用`mainloop()`函数运行程序。 通过这个源码,我们可以快速创建一个简单但漂亮的GUI界面。当然,实际的界面设计还需要根据具体需求进行定制的调整,包括布局、颜色搭配、组件的排列等。 ### 回答2: TkinterPython的标准GUI(图形用户界面)库之一,可以用于创建漂亮的GUI界面。下面是一个使用Tkinter设计漂亮GUI界面源码示例: ```python import tkinter as tk def create_gui(): # 创建主窗口 window = tk.Tk() window.title("漂亮的GUI界面") # 创建标签 label = tk.Label(window, text="欢迎使用漂亮的GUI界面!") label.pack() # 创建按钮 button = tk.Button(window, text="点击我") button.pack() # 创建文本框 entry = tk.Entry(window, width=30) entry.pack() # 运行主循环 window.mainloop() # 调用函数创建GUI界面 create_gui() ``` 这个示例演示了如何使用Tkinter创建一个简单的GUI界面。代码中首先导入了`tkinter`模块,然后定义了一个`create_gui`函数来创建GUI界面。函数内部首先创建了主窗口,然后创建了一个标签、一个按钮和一个文本框,并设置它们的位置和文本内容。最后通过`window.mainloop()`方法来运行主循环,以保持GUI界面不会关闭。 这只是一个简单的示例,你可以根据自己的需求来设计更加漂亮的GUI界面Tkinter提供了多种组件和布局选项,可以通过学习相关文档和教程来进一步探索和设计更加复杂和美观的GUI界面。 ### 回答3: 对于设计漂亮的GUI界面,我们可以使用Tkinter进行开发,下面是一个简单的Tkinter源码示例: ```python import tkinter as tk from tkinter import ttk # 创建主窗口 root = tk.Tk() root.title("漂亮的GUI界面设计") # 设置窗口大小和位置 root.geometry("400x300+300+200") # 创建Label组件 label = ttk.Label(root, text="欢迎使用Tkinter", font=("Helvetica", 20)) label.pack(pady=20) # 创建Entry组件 entry = ttk.Entry(root, width=30) entry.pack() # 创建Button组件 button = ttk.Button(root, text="点击我", command=lambda: print("Hello tkinter")) button.pack(pady=10) # 创建Checkbutton组件 check_button_var = tk.BooleanVar() check_button = ttk.Checkbutton(root, text="选中我", variable=check_button_var) check_button.pack() # 创建Combobox组件 combo_var = tk.StringVar() combo_box = ttk.Combobox(root, textvariable=combo_var) combo_box['values'] = ('选项1', '选项2', '选项3') combo_box.pack() # 创建Radiobutton组件 radio_var = tk.StringVar() radio_button1 = ttk.Radiobutton(root, text="选项1", variable=radio_var, value='1') radio_button2 = ttk.Radiobutton(root, text="选项2", variable=radio_var, value='2') radio_button1.pack() radio_button2.pack() # 运行主窗口 root.mainloop() ``` 这是一个简单的Tkinter程序,使用了常见的GUI组件如Label、Entry、Button、Checkbutton、Combobox和Radiobutton。你可以根据需要添加更多的组件和功能,进行自定义设计,创建出漂亮的GUI界面

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小康2022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值