PySimpleGUI:让spin支持循环

需求

自己用PySimpleGUI写了个小工具,但是发现它的spin不支持循环。
Tkinter本身的Spinbox有wrap这个开关可以觉得是否支持循环,但是没看到PySimpleGUI也支持这个特性。

代码实现

所谓spin的循环,是指当值变换到最大最小值时,可以在最大最小值直接切换。
下面我是为spin增加循环实现的代码:

import PySimpleGUI as psg
from datetime import datetime
import os
import shutil#选择窗口主题
psg.theme("Dark2")# 放大方向
zoom_directions = ["变大",  "变小"]
zoom_dir = psg.Spin(zoom_directions, readonly=True, size=5,enable_events=True, key='-ZOOM DIR-')
# 放大倍数
zoom_times = ["0.7X",  "1X", "2.5X"]
zoom_time = psg.Spin(zoom_times, readonly=True, size=5,enable_events=True, key='-ZOOM TIME-')layout = [[psg.Text('变倍方向:'), zoom_dir, psg.Text(" 倍率:"), zoom_time],[psg.Button('Exit', size=(10, 1))]
]
window = psg.Window('GUI测试', layout, font='_ 18', size=(500, 120))last_zoom_time = None
last_dir = Nonewhile True:event, values = window.read()if event == 'Exit' or event == psg.WIN_CLOSED:breakprint(f"event:{event}")if event == "-ZOOM DIR-":if last_dir == values['-ZOOM DIR-']:if values['-ZOOM DIR-'] == zoom_directions[0]:window['-ZOOM DIR-'].update(zoom_directions[1])else:window['-ZOOM DIR-'].update(zoom_directions[0])# print(f" direction:{window['-ZOOM DIR-'].get()}")elif event == "-ZOOM TIME-":if last_zoom_time == values['-ZOOM TIME-']:if values['-ZOOM TIME-'] == zoom_times[0]:window['-ZOOM TIME-'].update(zoom_times[2])else:window['-ZOOM TIME-'].update(zoom_times[0])# print(f" times:{window['-ZOOM TIME-'].get()}")last_dir = window['-ZOOM DIR-'].get()last_zoom_time = window['-ZOOM TIME-'].get()window.close()

代码效果:
在这里插入图片描述
当倍率变到最大,继续点击向上的按钮,则会变为最小值。

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

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

相关文章

移动开发行业——鸿蒙OS NEXT开出繁花

1月18日,华为宣布HarmonyOS NEXT开发者预览版开放申请,根据官方注解,这个版本的鸿蒙系统有个更通俗易懂的名字——“星河版”,也被称为“纯血”鸿蒙。 根据官方解释,之所以取名星河版,寓意鸿蒙OS NEXT就像…

Screen 简介

目录 1. screen 简介2. screen 基本命令 1. screen 简介 screen 是一个在 Unix 和类 Unix 系统上的 终端复用 工具。它允许用户在单个终端窗口中运行多个终端会话,并提供了一些其他功能,如会话断开后的恢复和远程连接的分离。以下是 screen 的一些主要特…

hyperf 和 laravel、lumen防止xss攻击中间件封装

hyperf 防止xss攻击自定义中间件封装 <?phpdeclare(strict_types1);namespace App\Middleware;use Psr\Container\ContainerInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Server\MiddlewareInterface; use Psr\Http\Message\ServerRequestInterface;…

【C语言】扫雷游戏完整代码实现

目录 1.game.h 2.game.c 3.progress.c 4.运行结果 1.game.h #define _CRT_SECURE_NO_WARNINGS#include <string.h> #include <stdio.h> #include <time.h> #include<stdlib.h>#define ROW 9 #define COL 9 #define ROWS 11 #define COLS 11 #defin…

SpringBoot 中配置处理

1、简介 本文介绍一些 springboot 配置管理相关的内容&#xff0c;如何自定义配置&#xff0c;导入配置&#xff0c;配置绑定和基于 profiles 的配置。 2、springboot 配置管理 2.1、自定义配置类 在 spring 中使用 Configuration 注解定义配置类&#xff0c;在 springboot 中…

904. 虫洞(spfa判断负环模板题)

904. 虫洞 - AcWing题库 农夫约翰在巡视他的众多农场时&#xff0c;发现了很多令人惊叹的虫洞。 虫洞非常奇特&#xff0c;它可以看作是一条 单向 路径&#xff0c;通过它可以使你回到过去的某个时刻&#xff08;相对于你进入虫洞之前&#xff09;。 农夫约翰的每个农场中包…

进程线程知识

一 初识linux线程 1 线程由来 我们之前说创建一个进程&#xff0c;要创建进程控制块pcb&#xff0c;进程地址空间&#xff0c;页表&#xff0c;而且我之前的博客中都有意无意的说明这个pcb是描述进程的&#xff0c;是os用来管理进程的&#xff0c;而有了线程后&#xff0c;就要…

Python基础第八篇(Python异常处理,模块与包)

文章目录 一、了解异常二、捕获异常&#xff08;1&#xff09;.异常案例代码&#xff08;2&#xff09;.读出结果 三、异常的传递&#xff08;1&#xff09;.异常传递案例代码&#xff08;2&#xff09;.读出结果 四、Python模块&#xff08;1&#xff09;.模块的导入&#xff…

大模型+自动驾驶

论文&#xff1a;https://arxiv.org/pdf/2401.08045.pdf 大型基础模型的兴起&#xff0c;它们基于广泛的数据集进行训练&#xff0c;正在彻底改变人工智能领域的面貌。例如SAM、DALL-E2和GPT-4这样的模型通过提取复杂的模式&#xff0c;并在不同任务中有效地执行&#xff0c;从…

k8s使用ingress实现应用的灰度发布升级

v1是1.14.0版本nginx ,实操时候升级到v2是1.20.0版本nginx&#xff0c;来测试灰度发布实现过程 一、方案&#xff1a;使用ingress实现应用的灰度发布 1、服务端&#xff1a;正常版本v1&#xff0c;灰度升级版本v2 2、客户端&#xff1a;带有请求头versionv2标识的请求访问版…

【MySQL】一文总结MVCC多版本并发控制

目录 MVCC 介绍当前读和快照读当前读快照读 MVCC 原理解析隐式字段Undo Log版本链Read ViewRead View 可见性原则 RC 和 RR 下的 Read ViewRC 下的 Read ViewRR 下的 Read View小结RR 级别下能否防止幻读总结 MVCC 介绍 在当今高度并发的数据库环境中&#xff0c;有效的并发控…

Element中的el-table中如何获取每一行的id

只需要用<template slot-scope"scope"></template >标签包裹起来即可 使用scope.row.列名&#xff0c;的方式获取当前行对应列的值 可以通过使用作用域插槽的方式获取每一行的id。以下是一个示例代码&#xff1a; <el-table-column prop"statu…

超级管理员权限绕过windows登录windows命令

文章目录 一、设置超级管理员权限二、绕过windows登录界面三、windows命令 一、设置超级管理员权限 查看本机的用户列表&#xff1a;net user激活超级用户&#xff1a;net user administrator /active:yes为超级用户设置密码&#xff1a;net user administrator 123(password)…

Redis 高可用之主从复制

1、简介 在 Redis 中&#xff0c;主从复制就是多个节点进行数据同步&#xff0c;在这些节点中&#xff0c;有 Master 和 slave 两个角色&#xff0c;Master 以写为主&#xff0c;slave 以读为主&#xff0c;当 Master 数据变化的时候&#xff0c;会自动将新的数据同步到其他的 …

C语言联合体(Union)在实战中的使用技巧

联合体&#xff08;Union&#xff09;是一种特殊的数据结构&#xff0c;允许在同一内存位置存储不同的数据类型。联合体在实战中可以用于一些特定的场景&#xff0c;具有一些使用技巧&#xff0c;以下是一些常见的实战中使用技巧&#xff1a; 1.节省内存空间&#xff1a; 联合…

如何优雅的使用 if else

作为一个程序员在开发中 if else 判断在代码中是必不可少的&#xff0c;但是 if else 判断使用多了嵌套多了不利于代码维护&#xff0c;看起来也头疼难以理解&#xff0c;接下来以为大家介绍一下我是怎么避免过多冗余的 if else 嵌套的。 0. 嵌套的if语句的典型用例 在最终执…

StableDiffusion新版汉化

新旧版不同&#xff0c;这里以新版为例&#xff0c;用的是带链接&#xff0c;可以更新的方法。 步骤&#xff1a; 1.找到这个位置&#xff0c;依次点击&#xff0c;注意选项。 2.点击加载&#xff0c;等待刷新。 ctrlF搜索 zh_CN Localization 右边点击install&#xff0c…

外包干了4个月,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入武汉某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

Thin-LUN使用vdbench测试性能如何预埋数据

一、功能需求 Thin-LUN性能测试过程中&#xff0c;由于刚创建的THIN-LUN需要预埋数据&#xff0c;才能准确测试出实际性能&#xff0c;所以在第一次性能测试之前&#xff0c;需要使用vdbench预埋数据 二、组网图 无 三、配置步骤 seekpcteof 测试性能时&#xff0c;如果读…

GAMES101-Assignment8

一、总览 1.1 连接绳子的约束 在rope.cpp 中, 实现Rope 类的构造函数。这个构造函数应该可以创建一个 新的绳子(Rope) 对象&#xff0c;该对象从start 开始&#xff0c;end 结束&#xff0c;包含num_nodes 个节点。也就是如下图所示&#xff1a; 每个结点都有质量&#xff…