import random
import tkinter as tk
import ttkbootstrap as ttk
from tkinter import messagebox
import pyperclip
def wenben_run():
def generate_text(original_text, length):
# 去掉原始文本中的换行符和空格
original_text = original_text.replace('\n', '')
original_text = original_text.replace(' ', '')
# 获取原始文本的长度
original_length = len(original_text)
# 如果指定的长度小于等于原始文本的长度,则直接截取原始文本
if length <= original_length:
start_index = random.randint(0, original_length - length)
return original_text[start_index:start_index + length]
# 从原始文本中随机选择字符生成指定长度的文本
generated_text = ''
current_length = 0
while current_length < length:
if current_length % 4 == 0 and current_length % 5 != 0:
# 每4个单位插入其他内容
other_content = generate_other_content()
generated_text += other_content
current_length += len(other_content)
else:
random_char = random.choice(original_text)
generated_text += random_char
current_length += 1
return generated_text[:length]
def generate_other_content():
# 生成其他内容的逻辑,可以根据需要自定义
# 这里只是一个示例,可以根据实际需求进行修改
other_contents = ['', 'c', 'f', 'c', 'm', '']
return random.choice(other_contents)
# 生成文本时先清空输入框
# 清空文本框
wenben_text_area2.delete(1.0, tk.END)
try:
# 尝试将输入框的内容转换为整数
wenbenlen = int(wenben_entry.get())
print("输入的整数为:", wenbenlen)
except ValueError:
# 如果转换失败,显示错误提示框
messagebox.showerror("错误", "输入的内容不是整数,请重新输入!")
wenbentext = wenben_text_area.get("1.0", tk.END)
# print(wenbenlen)
# print(wenbentext)
length = int(wenbenlen)
original_text = wenbentext
# 调用生成文本函数
generated_text = generate_text(original_text, length)
wenben_text_area2.insert(tk.END, generated_text)
# 复制内容至剪切板
pyperclip.copy(generated_text)
wenben_text_area2.insert(tk.END, '\n')
wenben_text_area2.insert(tk.END, '\n')
wenben_text_area2.insert(tk.END, '\n---------生成文本内容已自动复制!!!')
root = ttk.Window(
title='文本生成器', # 窗口标题
position=(750, 350), # 窗口运行展示坐标
resizable=None, # 是否固定窗口
alpha=0.94 # 虚化
)
# 设置窗口大小
root.geometry("520x320")
# 提示文本输入长度标签
wenben_label = ttk.Label(root, text='设置生成文本长度(如:10):')
wenben_label.grid(row=1, column=0)
# 文本长度输入框
wenben_entry = ttk.Entry(root, width=40)
wenben_entry.grid(row=1, column=1, columnspan=1)
# 给文本长度框默认赋值100
wenben_entry.insert(ttk.END, "100")
# 生成文本按钮
wenben_button = ttk.Button(root, width=10, text="生成文本", command=wenben_run)
wenben_button.grid(row=1, column=2, columnspan=2, sticky="w")
# 自定义文本提示标签
wenben_label2 = ttk.Label(root, text='自定义文本内容:')
wenben_label2.grid(row=2, column=0)
# 自定义文本输入框
wenben_text_area = ttk.Text(root, height=5, width=73)
wenben_text_area.grid(row=3, columnspan=3, sticky="w")
original_text = """123456789
一二三四五六七八九十
abcdefghijklnmopqrstuvwsyz
ABCDEFGHIJKLNMOPQRSTUVWSYZ!
@#$%^&*()_+<>?,.~{}|/,。"""
# 程序启动时插入默认的内容
wenben_text_area.insert(ttk.END, original_text)
# 生成文本内容提示标签
wenben_label3 = ttk.Label(root, text='生成的文本内容:')
wenben_label3.grid(row=4, column=0)
# 生成文本内容输入框
wenben_text_area2 = ttk.Text(root, height=8, width=73)
wenben_text_area2.grid(row=5, columnspan=3, sticky="w")
# 运行主循环
root.mainloop()