用tkinter做一个简单的小页面

用tkinter做一个简单的小页面

一、实现效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、主页面

2.1主页面框架

from tkinter import *
import tkinter as tk
import os


class Mian:
    def __init__(self):
        root = Tk()
        root.title(
            '--xx小程序 ')
        # 400和150为页面的长和宽,50和100为页面打开在电脑桌面的哪个位置
        root.geometry("400x150+50+100")
        # 背景颜色
        root["background"] = "#C9C9C9"

        # 中间写功能

        root.mainloop()


if __name__ == '__main__':
    Mian()

把这个框架搭起来,就可以运行出一个窗口,接下来可以在中间加入按钮之类的。

在这里插入图片描述

2.2 调用子页面

from tkinter import *
import tkinter as tk
# 引入子页面
import try_son


class Mian:
    def __init__(self):
        root = Tk()
        root.title(
            '--xx小程序 ')
        # 500和350为页面的长和宽,50和100为页面打开在电脑桌面的哪个位置
        root.geometry("400x150+50+100")
        # 背景颜色
        root["background"] = "#C9C9C9"

        # 中间写功能

        # 调用子页面的方法
        def SON():
            try_son.Find()
        # 使用按钮控件调用函数
        button = tk.Button(root, text="点击打开子页面", font=('微软雅黑', '15', 'bold'),
                           fg='#525D71', bg='#A7CBDC', command=SON)
        # 放置按钮
        button.place(x=50, y=100, width=300, height=40)

        root.mainloop()


if __name__ == '__main__':
    Mian()

点击button打开子页面,这里通过command=SON绑定上面的方法。

三、子页面

  • 子页面框架与主页面基本相同

3.1 文本标签和输入框

# 新建文本标签
        labe1 = tk.Label(root, text="学号:", width=20,
                         height=2, bg='#C9C9C9').grid(row=0)
        labe2 = tk.Label(root, text="姓名:", width=20,
                         height=2, bg='#C9C9C9').grid(row=1)
        # 为上面的文本标签,创建两个输入框控件,放在文本标签的后面
        id = tk.Entry(root, textvariable=StringVar())
        name = tk.Entry(root, textvariable=StringVar())
        id.grid(row=0, column=1)
        name.grid(row=1, column=1)
  • 注意这里的输入框的位置设置,不能向文本标签那样设置在一起,不能携程id=id = tk.Entry(root, textvariable=StringVar()).grid(row=0, column=1),会报错

  • 会报错AttributeError: ‘NoneType’ object has no attribute ‘get’,这是因为后面我们要获取id里面输入的数据,而.grid()是个方法,不能回调出数据

3.2 提交事件

# 提交事件
        def add():
            # 获取变量
            b_id = id.get()
            b_name = name.get()
            text.insert(INSERT, b_id+'学号为'+b_name)
            # 跳出提示
            tk.messagebox.showinfo('提示', '提交成功!')
        # 添加提交按钮,为button绑定add事件
        submit = tk.Button(root, text="提交", command=add).grid(row=2, column=1)
        # 设置一个文本框,用来显示得到的数据
        text = Text(root, width=30, height=5, undo=True, autoseparators=False)
        text.grid(row=3, column=1)
  • 如果上面位置合在一起写了,就是这里的b_id = id.get()获取数据会报错

3.3 子页面整体代码

from tkinter import *
import tkinter as tk
import tkinter.messagebox


class Find:
    def __init__(self):
        root = Tk()  # 创建窗口对象的背景色
        root.title(
            '--xxx子页面')
        root.geometry("400x200+200+50")
        root["background"] = "#C9C9C9"

        # 新建文本标签
        labe1 = tk.Label(root, text="学号:", width=20,
                         height=2, bg='#C9C9C9').grid(row=0)
        labe2 = tk.Label(root, text="姓名:", width=20,
                         height=2, bg='#C9C9C9').grid(row=1)
        # 为上面的文本标签,创建两个输入框控件,放在文本标签的后面
        id = tk.Entry(root, textvariable=StringVar())
        name = tk.Entry(root, textvariable=StringVar())
        # 位置设置,不能和上面的输入框写在一起,会报错
        # 会显示AttributeError: 'NoneType' object has no attribute 'get',这是因为.grid()是个方法,不能回调出数据
        id.grid(row=0, column=1)
        name.grid(row=1, column=1)

        # 提交事件
        def add():
            # 获取变量
            b_id = id.get()
            b_name = name.get()
            text.insert(INSERT, b_id+'学号为'+b_name)
            # 跳出提示
            tk.messagebox.showinfo('提示', '提交成功!')
        # 添加提交按钮,为button绑定add事件
        submit = tk.Button(root, text="提交", command=add).grid(row=2, column=1)
        # 设置一个文本框,用来显示得到的数据
        text = Text(root, width=30, height=5, undo=True, autoseparators=False)
        text.grid(row=3, column=1)

        root.mainloop()


if __name__ == '__main__':
    Find()

四、其他

在这里插入图片描述

  • 但是tkinter这个库不是那么全面,很多东西实现起来很麻烦,所以我后期改用了pyqt5,大家开始做界面之前,可以先查一查这个库是否能满足你想要达到的成果再下手哦
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值