Python 3.x - 使用文本字符串作为变量名 [英] Python 3.x - using text string as variable name

查看:16
本文介绍了Python 3.x - 使用文本字符串作为变量名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图避免使用

def Return_Label(self,number)  

带参数.

知道如何使用字符串来定义可用于 .set 值到 StringVar() 的变量名称吗?

Any Idea how to use string in order to define variable name usable to .set value to StringVar()?

import tkinter as tk
from tkinter import *

class WINDOW():
    def __init__(self):
        self.Settings_Window()

    def Settings_Window(self):
        self.settings_window = tk.Tk()
        self.settings_window.minsize(200,200)
        self.entry = Entry(self.settings_window)
        self.entry.pack()
        self.entry2 = Entry(self.settings_window)
        self.entry2.pack()
        self.label1input = StringVar()
        self.label = Label(self.settings_window,textvariable=self.label1input, bg='yellow')
        self.label.pack(expand='yes',fill='x')
        self.label2input = StringVar()
        self.label2 = Label(self.settings_window, textvariable=self.label2input, bg='yellow')
        self.label2.pack(expand='yes', fill='x')
        self.button = Button(self.settings_window,text='SETUP1',command=self.Next)
        self.button.pack()
        self.button2 = Button(self.settings_window,text='SETUP2',command=self.Next2)
        self.button2.pack()
        self.settings_window.mainloop()

    def Next(self):
        self.number=1
        self.Return_Label(self.number)

    def Next2(self):
        self.number=2
        self.Return_Label(self.number)

    def Return_Label(self,number):
        self.entry_field_value = self.entry.get()
        print(self.entry_field_value)
        #self.label1input.set(self.entry_field_value)
        setattr(self,'label'+str(number)+'input.set',self.entry_field_value)

window=WINDOW()

推荐答案

我更喜欢使用列表方法来管理多个输入字段和更新值.通过使用列表,您还可以使用索引值来管理标签:D.

I prefer a list approach to managing multiple entry fields and updating values. By using list you can use the index value to manage the labels as well :D.

请参阅以下示例,了解如何使用列表来处理所有值和更新.

See the below example of how you can use list to deal with all the values and updates.

import tkinter as tk
from tkinter import *

class Window(tk.Tk):
    def __init__(self):
        super().__init__()
        self.minsize(200, 200)
        self.entry_list = []
        self.label_list = []
        entry_count = 2

        for i in range(entry_count):
            self.entry_list.append(Entry(self))
            self.entry_list[i].pack()

        for i in range(entry_count):
            self.label_list.append(Label(self,bg='yellow'))
            self.label_list[i].pack(expand='yes', fill='x')

        Button(self, text='SETUP', command=self.Return_Label).pack()

    def Return_Label(self):
        for ndex, lbl in enumerate(self.label_list):
            lbl.config(text=self.entry_list[ndex].get())

if __name__ == '__main__':
    Window().mainloop()

这篇关于Python 3.x - 使用文本字符串作为变量名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆