Python 使用用户在entry widget tkinter上输入的属性更新或更改标签样式?

Python 使用用户在entry widget tkinter上输入的属性更新或更改标签样式?,python,tkinter,Python,Tkinter,在我的Gui应用程序中,我有每个小部件的按钮。如果用户单击名为label的按钮,标签小部件将在窗口上形成。我要求用户通过entry小部件设置标签属性(bg颜色和fg颜色),我需要使用这些属性更新现有标签。 有没有办法做到这一点 from tkinter import * def try1(): w=Tk() l=Label(w,text="Hi") l.pack() win=Tk() b=Button(win,text="Label",command=try1) b.pa

在我的Gui应用程序中,我有每个小部件的按钮。如果用户单击名为label的按钮,标签小部件将在窗口上形成。我要求用户通过entry小部件设置标签属性(bg颜色和fg颜色),我需要使用这些属性更新现有标签。 有没有办法做到这一点

from tkinter import *
def try1():
    w=Tk()
    l=Label(w,text="Hi")
    l.pack()
win=Tk()
b=Button(win,text="Label",command=try1)
b.pack()
ety_bgcolor=Entry(win,font=("",13,""), borderwidth=2, relief="groove")
ety_bgcolor.pack()
ety_fgcolor=Entry(win,font=("",13,""), borderwidth=2, relief="groove")
ety_fgcolor.pack()

误解问题编辑:

from tkinter import *
def try1():
    w=Tk()
    l=Label(w,text="Hi")
    l.config(bg=bgcolor.get())
    l.config(fg=fgcolor.get())
    l.pack()

win=Tk()
b=Button(win,text="Label",command=try1)
b.pack()

bgcolor = StringVar()
ety_bgcolor=Entry(win,font=("",13,""), borderwidth=2, relief="groove",textvariable=bgcolor)
ety_bgcolor.pack()
fgcolor = StringVar()
ety_fgcolor=Entry(win,font=("",13,""), borderwidth=2, relief="groove",textvariable=fgcolor)
ety_fgcolor.pack()

win.mainloop()
如果我理解正确,您希望用户单击按钮时主窗口获得新标签吗? 如果是这样,您需要将主窗口传递给函数,可以使用全局名称,也可以使用lambda函数将其作为变量传递给函数

使用全球:

from tkinter import *
def try1():
    w=win # referencing the main window globally
    l=Label(w,text="Hi")
    l.pack()

win=Tk()
b=Button(win,text="Label",command=try1)
b.pack()
ety_bgcolor=Entry(win,font=("",13,""), borderwidth=2, relief="groove")
ety_bgcolor.pack()
ety_fgcolor=Entry(win,font=("",13,""), borderwidth=2, relief="groove")
ety_fgcolor.pack()

win.mainloop()
使用lambda方法:

from tkinter import *
def try1(w): # getting the main window passed
    l=Label(w,text="Hi")
    l.pack()

win=Tk()
b=Button(win,text="Label",command = lambda: try1(win)) # passing the main window.
b.pack()
ety_bgcolor=Entry(win,font=("",13,""), borderwidth=2, relief="groove")
ety_bgcolor.pack()
ety_fgcolor=Entry(win,font=("",13,""), borderwidth=2, relief="groove")
ety_fgcolor.pack()

win.mainloop()
如果要设置颜色,必须在输入字段中添加字符串变量,并在设置标签配置设置时引用这些变量

from tkinter import *
def try1(w):
    l=Label(w,text="Hi")
    l.config(bg=bgcolor.get())
    l.config(fg=fgcolor.get())
    l.pack()

win=Tk()
b=Button(win,text="Label",command = lambda: try1(win))
b.pack()

bgcolor = StringVar()
ety_bgcolor=Entry(win,font=("",13,""), borderwidth=2, relief="groove",textvariable=bgcolor)
ety_bgcolor.pack()
fgcolor = StringVar()
ety_fgcolor=Entry(win,font=("",13,""), borderwidth=2, relief="groove",textvariable=fgcolor)
ety_fgcolor.pack()


win.mainloop()

使用
配置
方法更改
标签
属性

更改背景颜色和前景颜色的示例:

label.configure(background='yellow')
label.configure(foreground='red')

在创建标签之前,您只需调用条目小部件上的
get
方法来获取它们的值

def try1():
    ...
    bg = ty_bgcolor.get()
    fg = ety_fgcolor
    l=Label(w,text="Hi", background=bg, foreground=fg)
...

你说得有点对。但我有两个tkinter窗口。在第一个窗口我有一个按钮,2个标签bg和fg颜色的输入窗口小部件。如果我单击它,第二个窗口上会形成一个标签。如果用户在第一个窗口输入窗口小部件上输入bg和fg颜色,则第二个窗口中标签上的颜色会自动更改,并且这应该持续happen@Vijay哦,我误解了这个问题。在我发布的答案中添加了一种新方法,可以实现这一点。但是当你连续地说,它应该每次创建一个新窗口,还是更改现有窗口?“如果你想设置颜色,你必须添加字符串变量”-这是不正确的。您不必使用字符串变量。您可以从没有字符串变量的条目小部件中获取值。@en\u,它应该在现有窗口中仅更改。否,我应该在创建标签后获取值并更新它