gpt4 book ai didi

python - 条目小部件 : avoid more than one searchbar

转载 作者:太空宇宙 更新时间:2023-11-03 18:26:01 25 4
gpt4 key购买 nike

在我的代码中有两个按钮 - 当我单击第一个按钮时,程序写入窗口“home”,第二个按钮写入窗口“搜索”,并在“搜索”下创建搜索栏。我的问题是,当我单击“搜索”按钮两次(或更多次)时,搜索栏也会创建更多次。我该如何修复它? (我总是希望只有一个搜索栏)。

from tkinter import *

class App():
def __init__(self):
self.window = Tk()

self.text=Label(self.window, text="Some text")
self.text.pack()
button_home = Button(self.window, text='Home',command= self.home)
button_home.pack()
button_search = Button(self.window, text='Search', command=self.search)
button_search.pack()

def home(self):
self.text['text'] = 'home'

def search(self):
self.text["text"] = 'search'
meno = StringVar()
m = Entry(self.window, textvariable=meno).pack()

最佳答案

这里您所要做的就是添加一个变量来表示应用程序的条目是否已创建:

class App():
def __init__(self):
self.window = Tk()

self.text=Label(self.window, text="Some text")
self.text.pack()
button_home = Button(self.window, text='Home',command= self.home)
button_home.pack()
button_search = Button(self.window, text='Search', command=self.search)
button_search.pack()

self.has_entry = False

def home(self):
self.text['text'] = 'home'

def search(self):
self.text["text"] = 'search'
if not self.has_entry:
self.meno = StringVar() # NOTE - change meno to self.meno so you can
# access it later as an attribute
m = Entry(self.window, textvariable=self.meno).pack()
self.has_entry = True

更进一步,您可以让主页和搜索按钮控制是否实际显示条目小部件。您可以使用条目的 .pack.pack_forget 方法来完成此操作:

class App():
def __init__(self):
self.window = Tk()

self.text=Label(self.window, text="Some text")
self.text.pack()
button_home = Button(self.window, text='Home',command= self.home)
button_home.pack()
button_search = Button(self.window, text='Search', command=self.search)
button_search.pack()

self.meno = StringVar()
self.entry = Entry(self.window, textvariable=self.meno)

def home(self):
self.text['text'] = 'home'
self.entry.pack_forget()

def search(self):
self.text["text"] = 'search'
self.entry.pack()

希望这有帮助!

关于python - 条目小部件 : avoid more than one searchbar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23186481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com