python - 替换 Tkinter 小部件的内容
问题描述
我正在尝试开发一个类似 Twitter 的客户端来掌握 tkinter。我从存储在 sqlite 数据库中的推文中每屏显示 7 条推文。一行在标签中有名称、屏幕名称和创建日期。下面是一个带有推文文本的文本框。当用户按下下一个或上一个按钮时,我想显示文件中的下一个或上一个 7 条推文。不知道如何清除以前的数据并使用新数据进行更新。那是因为我希望小部件的创建是动态的,如下面的代码所示。因此,没有办法解决我的名字的特定小部件。
if tweetStr:
while i < listLen:
print(i)
user_name = tweetStr[i]['name']
screen_name = tweetStr[i]['screen_name']
created = tweetStr[i]['created_at']
tweet_text = (tweetStr[i]['short_text'] if not tweetStr[i]['long_text'] else tweetStr[i]['long_text'] )
top_space = tk.Text(f, width= 100, height=1)
top_space.grid(column = 0, row = start_row,columnspan=6, sticky="nsew")
top_space.configure(background='lightblue')
ttk.Label(f, text=user_name).grid(column=0, row=start_row+1,sticky='w')
ttk.Label(f, text=screen_name).grid(column=1, row=start_row+1,sticky='w')
ttk.Label(f, text=created).grid(column=2, row=start_row+1,sticky='w')
t = tk.Text(f, width= 100, height=3, wrap='word')
t.grid(column = 0, row = start_row+2,columnspan=6, sticky="nsew")
#t.insert(INSERT, "Begin " + "This is a test " * 800 + " END" + '\n\n')
t.insert(tk.INSERT, tweet_text)
i += 1
start_row += 6
解决方案
结果证明解决方案相当简单。
for widget in f.winfo_children():
if isinstance(widget, tk.Text):
widget.delete('1.0', "end")
elif isinstance(widget,ttk.Label):
widget['text'] = ''
推荐阅读
- java - 如何通过在android中使用位置来获取模态类数据
- javascript - 在使用 multer-s3-transform 上传到 s3 之前使用 imagemin 转换照片
- javascript - 尝试在 React 中使用状态存储数据以便以后可以访问时遇到问题
- json - 确定 API 是 RPC 还是 REST
- python - TypeError: 'numpy.int32' object is not iterable - 使用 sklearn_crfsuite 时出错
- c++ - 有没有一种方法可以将本地 Windows 调试器的输出集成到 Visual Studio 的界面中?
- c# - 如何删除位图数据的 Scan 0 成员中的不安全块
- php - 什么是正确的关系?- 拉拉维尔
- git - 添加和提交文件后,git push 不起作用
- spring-boot - 如何在单个路由中聚合两条消息?