在我的Gui应用程序中,每个小部件都有按钮。如果用户单击名为标签的按钮,则会在窗口上形成一个标签小部件。我要求用户通过输入来设置标签属性(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()
答案 0 :(得分:0)
误解了问题编辑:
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()
答案 1 :(得分:0)
使用ImageFields
方法更改configure
属性。
更改bg颜色和fg颜色的示例:
Label
答案 2 :(得分:0)
您只需在创建标签之前调用条目小部件上的get
方法即可获取其值。
def try1():
...
bg = ty_bgcolor.get()
fg = ety_fgcolor
l=Label(w,text="Hi", background=bg, foreground=fg)
...