python - 有没有办法使用按钮(Tkinter)同时调用一个元组索引?
问题描述
我正在使用一些 Youtube 视频学习 Python,并在 StackOverflow 中阅读这些线程,但是在观看视频和阅读数小时后,我找不到这个问题的答案:
我需要使用循环在变量中设置元组的一个元素,或者它可以是一个简单的计数器(然后我将能够从计数器中提取值并将其设置为调用以下所有值的指南在元组中,但我尝试的所有形式都不起作用),每一步都将由一个按钮(tkinter)激活。
主要思想是制作一种 Imageroll,按钮将是“NEXT BUTTON”。
我尝试了很多东西,我发布了我在这个网站上找到的这段代码,因为它不是那么复杂(而且有点工作)。
root = Tk()
root.geometry("200x200")
root.title("My Button Increaser")
rollImagenes=["1.png","2.png","3.png", "4.png", "5.png"]
global counter
counter = 0
def nClick():
global counter
counter += 1
mButton1.config(text = counter)
print(counter)
mButton1 = Button(text ="NEXT", command = nClick, fg = "darkgreen", bg = "white")
mButton1.pack()
NUMCLICKS=???
root.mainloop()```
解决方案
您可以使用生成器表达式一个接一个地生成每个元素。
在这里,我们一次使用list
一个pop
元素,在生成它之前将它重新插入到另一端。如果元素的数量变大,您可以使用collections.deque
数据结构作为循环,或者更好的是,itertools.cycle
.
import tkinter as tk
def _roll(seq):
while True:
elt = seq.pop(0)
seq.append(elt)
yield elt
def nClick():
mButton1.config(text=next(roll))
root = tk.Tk()
root.geometry("200x200")
root.title("My Button Increaser")
rollImagenes = ["1.png", "2.png", "3.png", "4.png", "5.png"]
roll = _roll(rollImagenes)
mButton1 = tk.Button(text="NEXT", command=nClick, fg="darkgreen", bg="white")
mButton1.pack()
root.mainloop()
推荐阅读
- python - 基于另一个数据框列更新数据框列而不使用 for 循环
- gmail-api - 使用内嵌图像的 Gmail Web 界面组成的邮件使用 Content-Disposition:attachment 发送
- node.js - Circleci 从现有的环境变量创建环境变量
- jaxb - MapStruct 无法为 XJC (JAXB) 生成的类生成映射器
- python - 无法在python中将列表列表转换为字典
- c# - 解析包含特殊文件夹的字符串
- xcode - 无法在 Flutter 应用程序的 iOS 文件夹中创建 pod 文件
- c# - C# 和 Node.js 中的读/写
- php - 在 ReactJs 中使用 Axios 发布到 Laravel 后端时,标题中不存在 Access-Control-Allow-Origin
- javafx - JavaFX,定制的 VirtualFlow 性能改进技巧