python随机显示四级词汇

news2024/12/24 22:12:16

python实现一个浮动窗口随机显示四级单词在桌面跑来跑去

实现一个浮动窗体随机显示四级单词在windows桌面置顶移动

tkinter库来创建窗口和显示单词,以及random库来随机选择单词。 使用after方法来定时更新窗口的位置,实现单词窗口的慢慢移动效果

使用pandas读取Excel文件,并将每行的单词和释义对应关系存储在一个字典中

实现鼠标悬停时显示对应的解释,或者直接显示对应解释FloatingWordWindow类中添加一个标签来显示解释,并在鼠标进入标签时更新解释内容

鼠标悬停的时候显示对应的解释,也就是对应键的值 不悬停的时候,不显示解释,返回显示随机单词 wraplength是自动换行

使用虚拟环境执行 E:\pycharm\anaconda\python.exe vocabulary.py

后台执行 E:\pycharm\anaconda\python.exe vocabulary.py & win不可用 在Linux或Mac系统下,你可以使用&符号

在Windows系统下,你可以使用start命令来启动一个新的窗口并在其中运行脚本,然后关闭该窗口,脚本将在后台继续执行。例如:

start /B E:\pycharm\anaconda\python.exe vocabulary.py 也不行

powershell可以

 cd "E:\pythonProject\other"
Start-Process -FilePath "E:\pycharm\anaconda\python.exe" -ArgumentList "vocabulary.py" -WindowStyle Hidden

初始版本

import tkinter as tk
import random
import pandas as pd
​
class FloatingWordWindow:
    def __init__(self, master):
        self.master = master
        self.master.overrideredirect(True)  # 隐藏标题栏和边框
        self.master.attributes('-topmost', True)  # 置顶窗口
        self.master.attributes('-alpha', 0.7)  # 设置透明度
        self.master.geometry('200x50+100+100')  # 初始位置和大小
        self.word_label = tk.Label(self.master, font=('Arial', 20))
        self.word_label.pack(expand=True)
        self.move_window()
​
    def move_window(self):
        x = random.randint(0, self.master.winfo_screenwidth() - self.master.winfo_width())
        y = random.randint(0, self.master.winfo_screenheight() - self.master.winfo_height())
        self.master.geometry(f'+{x}+{y}')
        self.master.after(3000, self.move_window)  # 每隔3秒更新一次位置
​
    def update_word(self):
        words = ['apple', 'banana', 'orange', 'grape', 'watermelon']  # 替换为你的四级单词列表
        df=pd.read_excel("大学英语四级词汇完整版带音标-顺序版.xlsx")
        # 提取单词和释义列的内容
        word_column = df.columns[0]  # 第一列是单词列
        meaning_column = df.columns[1]  # 第二列是释义列
        # 创建一个字典,将单词和释义对应关系存储起来
        word_meaning_dict = dict(zip(df[word_column], df[meaning_column]))
        # 将字典的键转换为列表
        words_list = list(word_meaning_dict.keys())
        # 随机选择一个单词
        random_word = random.choice(words_list)
        self.word_label.config(text=random_word)
        # 绑定鼠标悬停事件
        self.word_label.bind("<Enter>",
                             lambda event, word=random_word: self.show_meaning(event, word, word_meaning_dict))
        self.word_label.bind("<Leave>", lambda event: self.hide_meaning(random_word))  # 绑定鼠标移出事件
        self.master.after(3000, self.update_word)  # 每隔3秒更新一次单词
    def show_meaning(self, event, word, word_meaning_dict):
        meaning = word_meaning_dict.get(word, "Meaning not found")
        self.word_label.config(text=f"{meaning}",font=('Arial', 10),wraplength=150)
​
    def hide_meaning(self,random_word):
        self.word_label.config(text=random_word,font=('Arial', 20),wraplength=150)  # 清空文本
def main():
    root = tk.Tk()
    root.attributes('-toolwindow', True)  # 隐藏任务栏图标
    root.attributes('-alpha', 0.7)  # 设置透明度
    root.geometry('200x50+150+150')  # 初始位置和大小
    app = FloatingWordWindow(root)
    app.update_word()
    root.mainloop()
​
if __name__ == '__main__':
    main()

优化这个代码让excel读取只运行一次

import tkinter as tk
import random
import pandas as pd
​
class FloatingWordWindow:
    def __init__(self, master):
        self.master = master
        self.master.overrideredirect(True)  # 隐藏标题栏和边框
        self.master.attributes('-topmost', True)  # 置顶窗口
        self.master.attributes('-alpha', 0.7)  # 设置透明度
        self.master.geometry('200x50+100+100')  # 初始位置和大小
        self.word_label = tk.Label(self.master, font=('Arial', 20))
        self.word_label.pack(expand=True)
        self.load_word_meanings()  # 加载单词和释义
        self.move_window()
​
    def load_word_meanings(self):
        df = pd.read_excel("大学英语四级词汇完整版带音标-顺序版.xlsx")
        self.word_meaning_dict = dict(zip(df[df.columns[0]], df[df.columns[1]]))  # 单词和释义对应的字典
​
    def move_window(self):
        x = random.randint(0, self.master.winfo_screenwidth() - self.master.winfo_width())
        y = random.randint(0, self.master.winfo_screenheight() - self.master.winfo_height())
        self.master.geometry(f'+{x}+{y}')
        self.master.after(3000, self.move_window)  # 每隔3秒更新一次位置
​
    def update_word(self):
        random_word = random.choice(list(self.word_meaning_dict.keys()))  # 随机选择一个单词
        self.word_label.config(text=random_word)
        # 绑定鼠标悬停事件
        self.word_label.bind("<Enter>",
                             lambda event, word=random_word: self.show_meaning(event, word))
        self.word_label.bind("<Leave>", lambda event: self.hide_meaning(random_word))  # 绑定鼠标移出事件
        self.master.after(3000, self.update_word)  # 每隔3秒更新一次单词
​
    def show_meaning(self, event, word):
        meaning = self.word_meaning_dict.get(word, "Meaning not found")
        self.word_label.config(text=f"{meaning}", font=('Arial', 10), wraplength=150)
​
    def hide_meaning(self, word):
        self.word_label.config(text=word, font=('Arial', 20), wraplength=150)  # 清空文本
​
def main():
    root = tk.Tk()
    root.attributes('-toolwindow', True)  # 隐藏任务栏图标
    root.attributes('-alpha', 0.7)  # 设置透明度
    root.geometry('200x50+150+150')  # 初始位置和大小
    app = FloatingWordWindow(root)
    app.update_word()
    root.mainloop()
​
if __name__ == '__main__':
    main()
​

优化二 悬停显示

import tkinter as tk
import random
import pandas as pd
​
class FloatingWordWindow:
    def __init__(self, master):
        self.master = master
        self.master.overrideredirect(True)  # 隐藏标题栏和边框
        self.master.attributes('-topmost', True)  # 置顶窗口
        self.master.attributes('-alpha', 0.7)  # 设置透明度
        self.master.geometry('200x50+100+100')  # 初始位置和大小
        self.word_label = tk.Label(self.master, font=('Arial', 20))
        self.word_label.pack(expand=True)
        self.move_window()
​
        # 读取 Excel 数据
        self.load_excel_data()
​
    def move_window(self):
        x = random.randint(0, self.master.winfo_screenwidth() - self.master.winfo_width())
        y = random.randint(0, self.master.winfo_screenheight() - self.master.winfo_height())
        self.master.geometry(f'+{x}+{y}')
        self.master.after(3000, self.move_window)  # 每隔3秒更新一次位置
​
    def load_excel_data(self):
        self.df = pd.read_excel("大学英语四级词汇完整版带音标-顺序版.xlsx")
        self.word_column = self.df.columns[0]  # 第一列是单词列
        self.meaning_column = self.df.columns[1]  # 第二列是释义列
        # 创建一个字典,将单词和释义对应关系存储起来
        self.word_meaning_dict = dict(zip(self.df[self.word_column], self.df[self.meaning_column]))
        # 将字典的键转换为列表
        self.words_list = list(self.word_meaning_dict.keys())
​
    def update_word(self):
        # 随机选择一个单词
        random_word = random.choice(self.words_list)
        self.word_label.config(text=random_word)
        # 绑定鼠标悬停事件
        self.word_label.bind("<Enter>",
                             lambda event, word=random_word: self.show_meaning(event, word))
        self.word_label.bind("<Leave>", lambda event: self.hide_meaning(random_word))  # 绑定鼠标移出事件
        self.master.after(3000, self.update_word)  # 每隔3秒更新一次单词
​
    def show_meaning(self, event, word):
        meaning = self.word_meaning_dict.get(word, "Meaning not found")
        self.word_label.config(text=f"{meaning}", font=('Arial', 10), wraplength=150)
​
    def hide_meaning(self, random_word):
        self.word_label.config(text=random_word, font=('Arial', 20), wraplength=150)  # 清空文本
​
def main():
    root = tk.Tk()
    root.attributes('-toolwindow', True)  # 隐藏任务栏图标
    root.attributes('-alpha', 0.7)  # 设置透明度
    root.geometry('200x50+150+150')  # 初始位置和大小
    app = FloatingWordWindow(root)
    app.update_word()
    root.mainloop()
​
if __name__ == '__main__':
    main()

优化三 直接显示

import tkinter as tk
import random
import pandas as pd
​
class FloatingWordWindow:
    def __init__(self, master):
        self.master = master
        self.master.overrideredirect(True)  # 隐藏标题栏和边框
        self.master.attributes('-topmost', True)  # 置顶窗口
        self.master.attributes('-alpha', 0.7)  # 设置透明度
        self.word_label = tk.Label(self.master, font=('Arial', 18))
        self.word_label.pack(expand=True, padx=0, pady=0)
        self.load_word_meanings()  # 加载单词和释义
        self.move_window()
​
    def load_word_meanings(self):
        df = pd.read_excel("大学英语四级词汇完整版带音标-顺序版.xlsx")
        self.word_meaning_dict = dict(zip(df[df.columns[0]], df[df.columns[1]]))  # 单词和释义对应的字典
​
    def move_window(self):
        x = random.randint(0, self.master.winfo_screenwidth() - self.master.winfo_width())
        y = random.randint(0, self.master.winfo_screenheight() - self.master.winfo_height())
        self.master.geometry(f'100x25+{x}+{y}')  # 初始窗口大小为200x50
        self.master.after(3000, self.move_window)  # 每隔3秒更新一次位置
​
    def update_word(self):
        random_word = random.choice(list(self.word_meaning_dict.keys()))  # 随机选择一个单词
        meaning = self.word_meaning_dict.get(random_word, "Meaning not found")
        # meaning = meaning.replace("\n", "--")
        str=random_word+"\n"+meaning;
        num_newlines = str.count("\n")
        self.word_label.config(text=random_word+"\n"+meaning,justify="left",padx=0, pady=0) 
        self.word_label.config(height=(num_newlines+1)*25)  # Set height based on number of newlines
        # 根据单词长度和字体大小调整窗口大小
        word_length = len(random_word+meaning)
        font_size = 18
        window_width = max(18, word_length * font_size)
        self.master.geometry(f'{window_width}x{(num_newlines+1)*25}')  # 调整窗口宽度
        # # 绑定鼠标悬停事件
        # self.master.bind("<Enter>",
        #                      lambda event, word=random_word: self.show_meaning(event, word))
        # self.master.bind("<Leave>", lambda event: self.hide_meaning(random_word))  # 绑定鼠标移出事件
        # # 绑定左键单击事件
        self.master.bind("<Button-1>", lambda event: self.update_word())
        self.master.after(3000, self.update_word)  # 每隔3秒更新一次单词
​
    def show_meaning(self, event, word):
        meaning = self.word_meaning_dict.get(word, "Meaning not found")
        meaning = meaning.replace("\n", "--")
        self.word_label.config(text=f"{meaning}", font=('Arial', 10),padx=0, pady=0)
        word_length = len(meaning)
        font_size = 20
        window_width = max(20, word_length * font_size)
        self.master.geometry(f'{window_width}x30')  # 调整窗口宽度
​
    def hide_meaning(self, word):
        self.word_label.config(text=word, font=('Arial', 20), wraplength=150,padx=0, pady=0)  # 清空文本
​
def main():
    root = tk.Tk()
    root.attributes('-toolwindow', True)  # 隐藏任务栏图标
    root.attributes('-alpha', 0.7)  # 设置透明度
    app = FloatingWordWindow(root)
    app.update_word()
    root.mainloop()
​
if __name__ == '__main__':
    main()
​

优化四

随机不重复

import tkinter as tk
import random
import pandas as pd
​
class FloatingWordWindow:
    def __init__(self, master):
        self.master = master
        self.master.overrideredirect(True)  # 隐藏标题栏和边框
        self.master.attributes('-topmost', True)  # 置顶窗口
        self.master.attributes('-alpha', 0.7)  # 设置透明度
        self.word_label = tk.Label(self.master, font=('Arial', 20))
        self.word_label.pack(expand=True, padx=0, pady=0)
        self.load_word_meanings()  # 加载单词和释义
        self.move_window()
​
    def load_word_meanings(self):
        df = pd.read_excel("大学英语四级词汇完整版带音标-顺序版.xlsx")
        self.word_meaning_dict = dict(zip(df[df.columns[0]], df[df.columns[1]]))  # 单词和释义对应的字典
        self.available_words = list(self.word_meaning_dict.keys())  # 可选择的单词列表
​
    def move_window(self):
        x = random.randint(0, self.master.winfo_screenwidth() - self.master.winfo_width())
        y = random.randint(0, self.master.winfo_screenheight() - self.master.winfo_height())
        self.master.geometry(f'100x30+{x}+{y}')  # 初始窗口大小为200x50
        self.master.after(3000, self.move_window)  # 每隔3秒更新一次位置
​
    def update_word(self):
        if not self.available_words:  # 如果可选择的单词列表为空,则重新加载
            self.available_words = list(self.word_meaning_dict.keys())
​
        random_word = random.choice(self.available_words)  # 从可选择的单词列表中随机选择一个单词
        self.available_words.remove(random_word)  # 从可选择的单词列表中删除已选择的单词
        self.word_label.config(text=random_word,padx=0, pady=0)
        # 根据单词长度和字体大小调整窗口大小
        word_length = len(random_word)
        font_size = 20
        window_width = max(20, word_length * font_size)
        self.master.geometry(f'{window_width}x30')  # 调整窗口宽度
        # 绑定鼠标悬停事件
        self.master.bind("<Enter>",
                             lambda event, word=random_word: self.show_meaning(event, word))
        self.master.bind("<Leave>", lambda event: self.hide_meaning(random_word))  # 绑定鼠标移出事件
        # # 绑定左键单击事件
        self.master.bind("<Button-1>", lambda event: self.update_word())
        self.master.after(3000, self.update_word)  # 每隔3秒更新一次单词
​
    def show_meaning(self, event, word):
        meaning = self.word_meaning_dict.get(word, "Meaning not found")
        meaning = meaning.replace("\n", "--")
        word_length = len(meaning)
        font_size = 11
        window_width = max(10, word_length * font_size)
        self.master.geometry(f'{window_width}x30')  # 调整窗口宽度
        self.word_label.config(text=f"{meaning}", font=('Arial', 10), justify="left", wraplength=999, padx=0, pady=0)
​
    def hide_meaning(self, word):
        self.word_label.config(text=word, font=('Arial', 20), wraplength=150,padx=0, pady=0)  # 清空文本
​
def main():
    root = tk.Tk()
    root.attributes('-toolwindow', True)  # 隐藏任务栏图标
    root.attributes('-alpha', 0.7)  # 设置透明度
    app = FloatingWordWindow(root)
    app.update_word()
    root.mainloop()
​
if __name__ == '__main__':
    main()
​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1666961.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Apache Doris】周FAQ集锦:第 3 期

【Apache Doris】周FAQ集锦&#xff1a;第 3 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目&#xff01; 在这个栏目中&#xff0c;每周将筛选社区反馈的热门问题和话题&#xff0c;重点回答并进行深入探讨。旨在为广大用户和…

SpringBoot+Vue实现图片滑块和文字点击验证码

一、背景 1.1 概述 传统字符型验证码展示-填写字符-比对答案的流程&#xff0c;目前已可被机器暴力破解&#xff0c;应用程序容易被自动化脚本和机器人攻击。 摒弃传统字符型验证码&#xff0c;采用行为验证码采用嵌入式集成方式&#xff0c;接入方便&#xff0c;安全&#…

速了解及使用布隆过滤器

布隆过滤器 介绍 概念&#xff1a;是一种高效查询的数据结构 作用&#xff1a;判断某个元素是否在一个集合中。&#xff08;但是会出现误判的情况&#xff09; 实现原理 加入元素&#xff1a; 当一个元素需要加入到布隆过滤器中时&#xff0c;会使用一组哈希函数对该元素进…

每周日发系统规划与管理师伴读脑图,今天是第4章

从第4章开始&#xff0c;系统规划与管理师的学习就正式步入了主题&#xff0c;考虑到我过去中断了2周&#xff0c;想必你的第4章教程已经看完了吧&#xff1f;

2024年天津市静海区教师招聘报名流程(建议电脑)

2024年天津市静海区教师招聘报名流程&#xff08;建议电脑&#xff09; #报名 #教师招聘 #教师招聘考试 #教招 #天津教师招聘 #天津教师招聘考试 #24年天津教师招聘 #24年天津市教师招聘考试 #天津市静海区教师招聘 #静海区教师招聘考试 #静海区教师编 #静海区#

【OceanBase诊断调优】—— 租户资源统计项及其查询方法

本文主要介绍 OceanBase 数据库中租户资源统计项及其查询方法。 适用版本 OceanBase 数据库 V4.1.x、V4.2.x 版本。 CPU 资源统计项 逻辑 CPU 使用率&#xff08;线程处理请求的时间占比&#xff09;。 通过虚拟表 __all_virtual_sysstat 在 SYS 系统租户下&#xff0c;查看…

Ubuntu意外断电vmdk损坏--打不开磁盘“***.vmdk”或它所依赖的某个快照磁盘。

背景&#xff1a;电脑资源管理器崩溃卡死&#xff0c;强行断电重启&#xff0c;结果虚拟机打不开了&#xff0c;提示打不开磁盘“***.vmdk”或它所依赖的某个快照磁盘。 删除lck文件&#xff1a;失败vmware-vdiskmanager修复 &#xff1a;提示无法修复最终用 VMFS Recovery挂载…

【机器学习】集成学习在信用评分领域实例

集成学习在信用评分领域的应用与实践 一、引言二、集成学习的概念与原理三、集成学习在信用评分中的应用实例四、总结与展望 一、引言 在当今金融数字化快速发展的时代&#xff0c;信用评分成为银行、金融机构等评估个人或企业信用风险的重要工具。然而&#xff0c;单一的信用评…

OFDM802.11a的FPGA实现(十二)使用FFT IP核添加循环前缀

原文链接&#xff08;相关文章合集&#xff09;&#xff1a;OFDM 802.11a的xilinx FPGA实现 目录 1.前言2.循环前缀3.硬件实现4.ModelSim仿真 1.前言 为了能够消除传输过程当中的符号间干扰&#xff0c;在IFFT处理完毕之后还要加上循环前缀。 2.循环前缀 实际通信信道中,由于接…

Linux常用软件安装(JDK、MySQL、Tomcat、Redis)

目录 一、上传与下载工具Filezilla1. filezilla官网 二、JDK安装1. 在opt中创建JDK目录2.上传JDK压缩文件到新建目录中3.卸载系统自代jdk4.安装JDK5.JDK环境变量配置6. 验证是否安装成功 三、安装MySQL1.创建mysql文件夹2.下载mysql安装压缩包3.上传到文件夹里面4. 卸载系统自带…

动态规划算法:⼦数组、⼦串系列(数组中连续的⼀段)

例题一 解法&#xff08;动态规划&#xff09;&#xff1a; 算法思路&#xff1a; 1. 状态表⽰&#xff1a; 对于线性 dp &#xff0c;我们可以⽤「经验 题⽬要求」来定义状态表⽰&#xff1a; i. 以某个位置为结尾&#xff0c;巴拉巴拉&#xff1b; ii. 以某个位置…

清除HP打印机内存的5种方法,总有一种适合你

序言 HP打印机通常具有2 MB到32 MB的内部内存容量。打印机使用此内存存储打印作业和信息,如文档中的页数、纸张类型、纸张大小和字体。但是,如果打印作业的大小超过打印机的内存大小,它将无法执行打印命令,并将拒绝打印文档。 此外,有时打印作业可能会卡在打印机的内存中…

Matlab/simulink永磁直驱风机的建模仿真

Matlab/simulink直驱永磁同步风机的建模仿真&#xff0c;跟随风速波动效果好&#xff0c;可以作为后期科研的基础模型

关于 IIS 开启匿名访问网站仍要账号密码登录网站的解决方法

欢迎关注公总号【云边小网安】 问题提出&#xff1a;发现虽然勾选了允许匿名访问网站&#xff0c;但在访问某一网站的时候仍然需要登录账号密码 解决方法一&#xff1a;登录管理员账号密码解决方法二&#xff1a;添加访问网站文件夹的用户 访问某一网站本质上来讲&#xff0…

Adobe Animate 2024软件下载

Adobe Animate 2024软件下载&#xff1a; 百度网盘下载https://pan.baidu.com/s/1cQQCFL16OUY1G6uQWgDbSg?pwdSIMS Adobe Animate 2024&#xff0c;作为Flash技术的进化顶点&#xff0c;是Adobe匠心打造的动画与交互内容创作的旗舰软件。这款工具赋予设计师与开发者前所未有的…

避坑指南!RK3588香橙派yolov5生成RKNN模型!

地址1&#xff0c;转换模型 地址2&#xff0c;转换模型 地址3&#xff0c;解决ppa 下载k2 本文目录 一、将.pt模型转为onnx模型文件。&#xff08;Windows&#xff09;二、将.onnx模型转为.rknn模型文件。&#xff08;Linux&#xff09;三、将.rknn模型部署到开发板RK3588中…

SSRF服务器端请求伪造

漏洞原理 SSRF挖掘 SSRF具体利用 SSRF具体验证 SSRF防御与绕过 漏洞原理 这个漏洞允许攻击者去利用服务端的功能&#xff0c;来请求其他网络资源 SSRF(Server-Side Request Forgery:服务器端请求伪造) 是指攻击者能够从易受攻击的 Web应用程序发送精心设计的请求的对其他网站…

数列排序C++

题目&#xff1a; 思路&#xff1a; 创建一个数组a&#xff0c;循环遍历输入&#xff0c;然后使用函数sort进行上升排序&#xff0c;最后循环遍历输出a[i]. #include <bits/stdc.h> using namespace std; int main(){int a[201];int n;cin>>n;//输入for(int i0;i&l…

使用单片机在图形点阵LCD上绘制波形图

使用单片机在图形点阵LCD上绘制波形图 需求&#xff1a; 假如有一组浮点数据&#xff0c;是通过AD转换得到的&#xff0c;保存在数组MyArray[]中&#xff0c;采集点数为len&#xff0c;采集周期为T&#xff0c;现在想用单片机在LCD上绘制出这组数据对应的波形图&#xff0c;该…

python实现动态时钟功能

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 一.前言 时钟,也被称为钟表,是一种用于测量、记录时间的仪器。时钟通常由时针、分针、秒针等计时仪器组成,是现代社会不可或缺的一种计时工具。它的发明和使用极大地改变了人类的生活方式和时间观念。 时钟的类型有很多,…