利用 tkinter 实现题库查询功能 [控件大小自适应界面变化]

本文介绍如何利用 Tkinter 库开发一个题库查询工具,实现界面控件的自适应大小调整,涵盖Label、Entry、Button和Text等组件,并能进行题目的搜索和显示。程序包含100道题目,提供了打包下载链接。

今天回答了几个和 tkinter 相关的问题,都是和界面,控件,事件相关,结合这段时间都在手机答题, 题库查询太麻烦。就做了这个例子。

本例子用到 Tkinter 库。 包含Tkinter 的 Label , Entry , Button , Text 还有相关事件。 完成题库的查询显示功能。

控件大小自适应界面变化。

数据包含100道题目。

 

# encoding: utf-8
"""
@author: seakingx
@contact: hndm@qq.com
@version: 1.0
@file: doex.py
@time: 2020/3/19 0019 14:39

说明 简单查题工具
"""

import tkinter as tk
from tkinter import messagebox
on_hit = False
class MainBox:
    def __init__(self):
        self.AppName = "刷题【好好学习 天天向上】"
        self.size = '800x600'
        self.datalist = []
        self.init_data()

    def init_data(self):
        f = open('qgtk/qgtk.txt', encoding='utf8')
        txt_list = f.readlines()
        f.close()
        t_i = 0
        t_text = ""
        t_item = []
        t_list = []
        for t in txt_list:
            if t.strip() == "":
                continue
            if t.find("答案") >= 0:
                t_i = t_i + 1
                t_item.append(t_text.replace("\
### Tkinter Canvas 自动调整大小以适应图像尺寸 为了实现 Tkinter 画布根据加载的图像自动调整大小功能,可以采用以下方法: 创建一个 `Canvas` 实例并绑定 `<Configure>` 事件来监听窗口变化。当检测到窗口改变时,更新画布上的图像显示区域。 ```python from tkinter import * from PIL import Image, ImageTk class AutoResizeImage: def __init__(self, root): frame = Frame(root) frame.pack(fill=BOTH, expand=YES) # 创建可滚动的 Canvas 容器 self.canvas = Canvas(frame, highlightthickness=0) self.canvas.pack(side=LEFT, fill=BOTH, expand=YES) # 加载原始图像文件 img_path = "example.jpg" pil_image = Image.open(img_path) # 将PIL.Image转换为tkinter兼容的对象 tk_img = ImageTk.PhotoImage(pil_image) # 记录初始宽度高度用于计算缩放比例 self.image_width = tk_img.width() self.image_height = tk_img.height() # 显示图像于canvas上 self.image_on_canvas = self.canvas.create_image(0, 0, anchor=NW, image=tk_img) self.tk_img_ref = tk_img # 绑定配置更改事件处理程序 self.canvas.bind('<Configure>', lambda event: self.resize(event)) def resize(self, event=None): """重新设置图像大小""" wscale = event.width / self.image_width hscale = event.height / self.image_height # 获取当前容器的实际可用空间 new_w = int(wscale * self.image_width) new_h = int(hscale * self.image_height) # 使用新的尺寸重置图像对象 resized_pil_image = original_pil_image.resize((new_w, new_h), Image.ANTIALIAS) updated_tkimg = ImageTk.PhotoImage(resized_pil_image) # 更新画布中的图像引用以防被垃圾回收机制清除 self.canvas.itemconfig(self.image_on_canvas, image=updated_tkimg) self.tk_img_ref = updated_tkimg ``` 上述代码展示了如何通过继承自定义类的方式,在初始化阶段读取指定路径下的图片资源,并将其展示在一个支持动态调整大小的 `Canvas` 控件内[^1]。每当窗口发生变动时触发回调函数 `resize()` 来实时调整内部存储的图像实例以及其对应的可视化表示形式。 需要注意的是这段脚本依赖 Python Imaging Library (Pillow),因此如果尚未安装该库的话需要先执行 pip install pillow 命令完成环境准备操作。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

陈年椰子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值