在我的整个项目中,我运行的代码与下面的代码非常相似。我正试图在一个按钮按下显示一些文本。在我的整个项目中,当我点击按钮时,新文本呈现,但它与旧文本重叠,而不是删除旧文本然后呈现新文本。
我如何显示和更新文本自由重叠的按钮按下?
我的代码在EDIT ->jokeTextBox。配置未定义
class Joke(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent, background="#3a4466")
jokeTextBox = ttk.Label(self, background="red", foreground="white", )
jokeTextBox.place(x=250, y=150)
def jokeMode(self):
global jokeCount
text = aJokeFunction()
jokeTextBox.config(text=text,bg="red", fg="white")
如何在按下按钮时显示和更新没有重叠的文本?
创建按钮后创建一个空标签,然后在jokeMode()
函数中仅config
标签的文本。
joke = Button(text="Joke", command=jokeMode(), background='pink')
这一行将只调用函数jokeMode()
一次。因此,使用command=jokeMode
代替。
完整的解决方案如下:
.
.
.
def jokeMode():
text = aJokeFunction()
#configure the label with new text and other attributes like bg, fg
jokeTextBox.config(text=text,bg="red", fg="white")
joke = Button(text="Joke", command=jokeMode, background='pink') #use command=jokeMode instead of command=jokeMode()
joke.place(x=75, y=50)
#create an empty label for joke here
jokeTextBox = Label(ws)
jokeTextBox.place(x=25, y=150)
ws.mainloop()
如果使用OOP:
class Joke():
def __init__(self, parent):
self.myFrame = Frame(parent, background="#3a4466")
self.myFrame.place(x=75, y=150)
self.jokeTextBox = Label()
self.jokeTextBox.place(x=250, y=150)
def jokeMode(self):
text = aJokeFunction()
self.jokeTextBox.config(text=text,bg="red", fg="white")
jokeFrame = Joke(ws)
joke = Button(text="Joke", command=jokeFrame.jokeMode, background='pink')
joke.place(x=75, y=50)
ws.mainloop()