首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python Tkinter - for循环计数器增量按钮错误

Python Tkinter - for循环计数器增量按钮错误
EN

Stack Overflow用户
提问于 2018-08-22 05:13:15
回答 1查看 642关注 0票数 1

我正在创建一个有趣的RPG状态窗口(就像当你在rpg中升级,并为某些属性添加技能点数时)。我现在只是尝试创建状态窗口(显示球员的名字,统计数据,以及基于他们的统计数据的职业,等等)。

这就是我到目前为止所知道的:

代码语言:javascript
复制
from tkinter import *
from tkinter import ttk

root = Tk()
root.geometry("300x300")

counter = IntVar()

def increase_stat(event=None):
    counter.set(counter.get() + 1)
def decrease_stat(event=None):
    counter.set(counter.get() - 1)

rnum = 0

for stat in ["Str","Int","Dex"]:
    Label(root, text=stat).grid(row=rnum, column=0)
    Label(root, textvariable=counter).grid(row=rnum+1, column=1)
    Button(root, text="+", command=increase_stat).grid(row=rnum+1, column=0)
    Button(root, text="-", command=decrease_stat).grid(row=rnum+1, column=2)
    rnum = rnum + 2

root.mainloop()

这是到目前为止这段代码的结果:

我遇到的问题是,按下任何统计数据的"+“或"-”按钮都会影响其他所有统计数据,而不仅仅是我正在单击的统计数据。例如,单击"Str“下的"+”按钮将+1添加到"Str“中,而不是将+1添加到所有三个统计数据中。

我只是刚刚开始,所以我将添加更多的这三个统计信息(比如显示一个角色是基于统计信息的职业),所以任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-22 09:24:52

您需要创建一个变量来记录每个标签的增量和减量;您还必须指明必须更改哪个计数器。

也许是这样的?

代码语言:javascript
复制
import tkinter as tk

root = tk.Tk()
root.geometry("300x300")

def increase_stat(event=None, counter=None):
    counter.set(counter.get() + 1)

def decrease_stat(event=None, counter=None):
    counter.set(counter.get() - 1)

counters = [tk.IntVar() for _ in range(3)]

rnum = 0
for idx, stat in enumerate(["Str", "Int", "Dex"]):
    tk.Label(root, text=stat).grid(row=rnum, column=0)
    tk.Label(root, textvariable=counters[idx]).grid(row=rnum+1, column=1)
    tk.Button(root, text="+", command=lambda counter=counters[idx]: increase_stat(counter=counter)).grid(row=rnum+1, column=0)
    tk.Button(root, text="-", command=lambda counter=counters[idx]: decrease_stat(counter=counter)).grid(row=rnum+1, column=2)
    rnum = rnum + 2

root.mainloop()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51956780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档