import numpy as np
from tabulate import tabulate
import random
from tkinter import *
import os
filename = 'student.txt'
LOG_LINE_NUM = 0
a = []
# 界面化
class MY_GUI:
def __init__(self, init_window_name):
self.init_data_label2 = None
self.init_data_label3 = None
self.init_data_Text1 = None
self.init_data_label1 = None
self.str_trans_to_md5_button = None
self.log_data_Text = None
self.result_data_Text = None
self.log_label = None
self.result_data_label = None
self.init_data_label = None
self.init_data_Text = None
self.init_window_name = init_window_name
# 设置窗口
def set_init_window(self):
self.init_window_name.title("随机排序") # 窗口名
self.init_window_name.geometry('500x550+380+100') # 290 160为窗口大小,+10 +10 定义窗口弹出时的默认展示位置
# #窗口背景色,其他背景色见:blog.csdn.net/chl0000/article/details/7657887 self.init_window_name.attributes("-alpha",
# 0.9) #虚化,值越小虚化程度越高 标签
self.init_data_label1 = Label(self.init_window_name, text="姓 名:", font=('Arial', 15), width=10)
self.init_data_label1.place(x=75, y=50, anchor='nw')
# 文本框
self.init_data_Text = Text(self.init_window_name, width=20, height=1, bg="white", fg="black", font=("宋体", 14),
bd='0') # 原始数据录入框
self.init_data_Text.place(x=190, y=50, anchor='nw')
self.init_data_Text1 = Text(self.init_window_name, width=450, height=300, bg="white",
fg="black", font=("宋体", 14),
bd='0') # 结果输出框
self.init_data_Text1.place(x="25", y="200", width="450", height="300")
# 按钮
self.str_trans_to_md5_button = Button(self.init_window_name, text="添加", bg="lightblue", width=10,
font=('黑体', 12), command=self.add_date) # 调用内部方法 加()为直接调用
self.str_trans_to_md5_button.place(x=40, y=120, anchor='nw')
self.str_trans_to_md5_button = Button(self.init_window_name, text="查询", bg="lightblue", width=10,
font=('黑体', 12), command=self.show_date) # 调用内部方法 加()为直接调用
self.str_trans_to_md5_button.place(x=200, y=120, anchor='nw')
self.str_trans_to_md5_button = Button(self.init_window_name, text="生成", bg="lightblue", width=10,
font=('黑体', 12), command=self.split_date) # 调用内部方法 加()为直接调用
self.str_trans_to_md5_button.place(x=360, y=120, anchor='nw')
self.init_data_label2 = Label(self.init_window_name, text="@Author:", font=('宋体', 13), width=10)
self.init_data_label2.place(x=120, y=160, anchor='nw')
self.init_data_label3 = Label(self.init_window_name, text="聪明的波波", font=('宋体', 13), width=10)
self.init_data_label3.place(x=250, y=160, anchor='nw')
path = StringVar()
path.set(os.path.abspath(".."))
# 功能函数
def add_date(self):
src = self.init_data_Text.get(1.0, END)
if len(src) <= 1:
self.init_data_Text.delete(1.0, END)
self.init_data_Text1.delete(1.0, END)
self.init_data_Text1.insert(1.0, "请不要输入空白信息!!!")
else:
src = np.array(src)
a.append(src)
self.init_data_Text.delete(1.0, END)
self.init_data_Text1.delete(1.0, END)
self.init_data_Text1.insert(1.0, "添加成功")
def show_date(self):
self.init_data_Text1.delete(1.0, END)
if len(a) < 1:
self.init_data_Text1.delete(1.0, END)
self.init_data_Text1.insert(1.0, "暂无内容,请先添加有效信息!")
else:
c = []
b = a
b = np.array(b)
b = b.reshape(-1, 1)
b = b[:, 0]
tmp = np.arange(len(a))
c.append(tmp)
c = np.array(c)
b = b[c]
b = b.T
title = ['序号', '姓名']
self.init_data_Text1.insert(1.0, tabulate(b, headers=title,
tablefmt='grid', showindex=np.arange(1, len(a)+1)))
def split_date(self):
self.init_data_Text1.delete(1.0, END)
if len(a) < 1:
self.init_data_Text1.delete(1.0, END)
self.init_data_Text1.insert(1.0, "暂无内容,无法生成!")
else:
self.init_data_Text1.delete(1.0, END)
c = []
b = a
b = np.array(b)
b = b.reshape(-1, 1)
b = b[:, 0]
tmp = random.sample(range(len(a)), len(a))
c.append(tmp)
c = np.array(c)
title = ['序号', '名称']
result = b[c]
result = result.T
self.init_data_Text1.insert(1.0, tabulate(result, headers=title, tablefmt='grid',
showindex=np.arange(1, len(a) + 1)))
def gui_start():
init_window = Tk() # 实例化出一个父窗口
ZMJ_PORTAL = MY_GUI(init_window)
# 设置根窗口默认属性
ZMJ_PORTAL.set_init_window()
init_window.mainloop() # 父窗口进入事件循环,可以理解为保持窗口运行,否则界面不展示
gui_start()
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
本资源为自主学习所做,主要功能如下: 1.增添个人信息(主要展现为姓名)。 2.查询所添加的姓名信息。 3.生成随机序列 原理讲解: 首先通过tkinter创建GUI界面 将各个功能封装成类 将输入的文本(姓名)信息转化为array数组,然后将其append到一个数组中 通过读取数组中的元素实现查看所有录入的信息 判断已知数组的长度,然后生成等长的不重复的随机数数组 然后通过随机数组对保存有信息的数组进行索引生成行的数组即随机排序结果 所有结果的显示均通过tabulate的grid形式输出以保证整体的美观
资源推荐
资源详情
资源评论
收起资源包目录
python的简单随机排序GUI界面化小程序.zip (2个子文件)
python的简单随机排序GUI界面化小程序
源代码
python的简单随机排序GUI界面化小程序.py 6KB
可执行程序
python的简单随机排序GUI界面化小程序.exe 22.91MB
共 2 条
- 1
资源评论
我是小石呀
- 粉丝: 676
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功