在 tkinter 中配置标签时如何区分标签?

基本上,我正在尝试制作一个每秒更新自己的变量列表,但我只能获取要更新的最后一个标签。我对 tkinter 不太熟悉,没有任何帮助。我认为主要问题是我已经得到了它,但我不知道任何其他方式,如果有人可以帮助我解决我的问题,甚至帮助检修程序,那将非常感激。


import time

import textwrap

from tkinter import Tk, Label, Button

from pathlib import Path


while True:

    print(textwrap.fill("Please enter the name that you entered for the main document. It must have the exact same characters and is case sensitive.", 70))

    Name = input()

    FileName = Name+".txt"

    P = Path(FileName)


    if P.exists():


        class MyFirstGUI:


            def __init__(self, master):


                with open(FileName, "r") as file:

                    global Points

                    global Item1

                    global Item2

                    global Item3

                    global PPC

                    global PPS

                    global Item1Cost

                    global Item2Cost

                    global Item3Cost

                    read = file.read().splitlines()

                    Points = read[0]

                    Item1 = read[1]

                    Item2 = read[2]

                    Item3 = read[3]

                    PPC = 1 + int(Item3)

                    PPS = int(Item1)*1 + int(Item2)*5

                    Item1Cost = read[6]

                    Item2Cost = read[7]

                    Item3Cost = read[8]

                    Points = int(Points) + int(PPS)


                VarList = [str(Points), str(Item1), str(Item2), str(Item3), str(PPC), str(PPS), str(Item1Cost), str(Item2Cost), str(Item3Cost)]


                with open(FileName, "w") as file:


                    for List in VarList:

                        file.write(List+'\n')


                root = Tk()

                self.master = master

                master.title("Menu")


                self.label = Label(master, text=Points, anchor='w')

                self.label.pack(fill='both', padx=10)

                self.label = Label(master, text=Item1, anchor='w')

                self.label.pack(fill='both', padx=10)


慕的地8271018
浏览 197回答 2
2回答

慕勒3428872

您可以使用字典来存储所有标签,因为字典允许键和值之间的映射。这对您来说可能是什么样子的示例:self.labels = {} #Creates an empty dictionaryself.labels["points"] = Label(master, text=Points, anchor='w')self.labels["points"].pack.pack(fill='both', padx=10)self.labels["Item1"] = Label(master, text=Item1, anchor='w')self.labels["Item1"].pack(fill='both', padx=10)#.... rest of labels here或者,您可以使用列表来存储所有标签并使用索引访问每个标签。这样,您就不必在创建每个标签后手动打包它:self.labels = []self.labels.append(Label(master, text=Points, anchor='w'))self.labels.append(Label(master, text=Item1, anchor='w'))self.labels.append(Label(master, text=Item2, anchor='w'))#.... rest of labels herefor label in self.labels:    label.pack(fill='both', padx=10)最后,您可以为标签指定不同的名称。这可能是最清晰、最直接的选择:self.points_label = Label(master, text=Points, anchor='w')self.Item1_label = Label(master, text=Item1, anchor='w')self.Item2_label = Label(master, text=Item2, anchor='w')self.Item3_label = Label(master, text=Item3, anchor='w')self.Item1Cost_label = Label(master, text=Item1Cost, anchor='w')#.... rest of labels here. Don't forget to pack each one请记住:标识符名称可以是任何你想要的(他们不都只是self.label用tkinter),只是,只要他们:不要以数字开头仅包含字母、数字和_'s不是保留的 python 关键字/函数(不建议覆盖函数,尽管它是可能的。)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python