python tkinter text 清空_Python tkinter清除标签文本

我刚刚开始使用Python的tkinter模块来创建一些基本的gui。在下面所示的GUI中,用户被提示选择一个石油指数,随后的定价信息将出现(价格信息是从网上刮来的)。但是,我还没有找到一个方便的方法来清除定价标签文本,以便用户选择另一个石油指数。我有完整的代码附在下面。如有任何建议,将不胜感激。谢谢您。在# Import Python Modules

from tkinter import *

from ttk import *

import urllib2

from bs4 import BeautifulSoup

import re

# Generate Basic Window

root = Tk()

root.geometry("225x125")

root.resizable(0,0)

root.title("Global Oil Price GUI")

# Functions

def fetchdata(event):

index = combo.current() # Get index of combobox selection

# Obtain HTML

url = 'http://oilprice.com/oil-price-charts/45' # URL to be scraped

content = urllib2.urlopen(url)

parsed = BeautifulSoup(content,'html.parser')

# Parse HTML

oilprice = parsed.findAll('td',attrs = {'class': 'last_price'})

change = parsed.findAll('td',{'class':['change_up flat_change_cell','change_down flat_change_cell','change_up','change_down']})

change_percent = parsed.findAll('td',{'class':['change_up_percent percent_change_cell','change_down_percent percent_change_cell','change_up_percent','change_down_percent']})

# Pre-Initialize Arrays

oilprice_extract = []

change_extract = []

change_percent_extract = []

time_extract = []

# Loop and Extract Text

for ele_price, ele_change, ele_change_percent in zip(oilprice,change,change_percent):

oilprice_extract.append(float(ele_price.text))

change_extract.append(ele_change.text)

change_percent_extract.append(ele_change_percent.text.split('%')[0] + '%')

time_extract.append(re.sub('\n\t',' ',ele_change_percent.text.split('%')[1]))

# Fill Field Based Upon Selection

price_label = Label(root,text = oilprice_extract[index]).grid(row = 2,column = 2)

change_label = Label(root,text = change_extract[index]).grid(row = 3,column = 2)

change_percent_label = Label(root,text = change_percent_extract[index]).grid(row = 4,column = 2)

update_label = Label(root,text = time_extract[index]).grid(row = 5,column = 2)

# Driver Code

combo_label = Label(root,text = "Futures & Indexes",justify = LEFT).grid(row = 0, column = 0)

combo = Combobox(root,values = ["WTI Crude","Brent Crude","Mars US","OPEC Basket","Canadian Crude Index"],width = 17)

combo.grid(row = 1, column = 0)

combo.bind("<>",fetchdata)

price_display = Label(root,text = " Price (USD):").grid(row = 2,column = 0)

change_display = Label(root,text = "Change:").grid(row = 3,column = 0)

change_percent_display = Label(root,text = "Change Percent:").grid(row = 4,column = 0)

update_display = Label(root,text = "Last Updated:").grid(row = 5,column = 0)

root.mainloop() # Run window continuously**

更新:

还是个小问题。

场景:用户选择WTI原油作为首选,显示“上次更新:(11分钟延迟)”

然后用户选择Mars US,它应该显示类似“Last Update:(2 Days Delay)”的内容

问题:标签相互重叠,如图EXAMPLE PHOTO

有什么解决办法吗?在

### 回答1: 可以使用`delete()`方法来清空`Text`控件中的内容,具体用法如下: ```python text.delete(1., "end") ``` 其中,`1.`表示从第一行第一列开始,`"end"`表示到文本末尾结束,这样就可以清空整个`Text`控件中的内容了。 ### 回答2: Python tkinter 中的 Text 组件是一个非常有用的文本显示和编辑控件,它允许用户在窗口中显示和编辑大量文本内容。但是,在一些情况下,我们可能需要在 Text 组件中清空所有内容,重新开始编辑或显示新的文本信息。本文将详细介绍如何在 Python tkinter清空 Text 组件的内容。 首先,我们需要创建一个 Text 组件: ``` from tkinter import * root = Tk() text = Text(root) text.pack() ``` 现在,我们可以在 Text 组件中添加一些文本内容,例如: ``` text.insert(END, "Hello, World!\n") text.insert(END, "Python is a great programming language.") ``` 注意,我们使用了 insert() 方法将文本内容添加到 Text 组件中。 要清空 Text 组件的文本内容,我们可以使用 delete() 方法: ``` text.delete('1.0', END) ``` 此代码行将删除整个 Text 组件中存在的所有文本。其中 '1.0' 表示删除的起始位置,'END' 表示删除的结束位置。在 tkinter 中,'1.0' 代表第 1 行第 0 个字符的位置,因为 tkinter 将每个 Text 组件视为一个单独的文档。 我们还可以使用更加简洁的代码来清空 Text 组件的内容: ``` text.delete('1.0', 'end') ``` 这个代码块在删除文本时使用了更短的 'end' 代替了 'END'。这两者是等效的。 如果我们只想删除最后一行的文本,我们可以使用 'end-1c' 代替 'end': ``` text.delete('end-1c', 'end') ``` 这段代码将删除 Text 组件中的最后一行文本。 总之,我们可以使用 delete() 方法来清空 Text 组件的内容,'1.0' 和 'end' 可用于指定删除的起始和结束位置,'end-1c' 可用于删除最后一行的文本。希望这个教程能对你有所帮助! ### 回答3: 在PythonTkinter图形用户界面(GUI)中,文本框是显示文本的标准控件。在某些情况下,您可能需要清空文本框,以便重新加载新的文本并开始新的工作。 清空文本框的方法通常使用哪一种依赖于您使用的文本框控件。常见的文本框控件有Text和Entry。对于Text控件,可以使用delete()方法来删除当前文本。例如,如果您的Text控件称为my_text,则以下代码删除了所有文本: ```python my_text.delete('1.0', 'end') ``` 上面的代码中,“1.0”表示第一行第一个字符,而“end”表示文本框的末尾。使用这种方法,即使my_text不包含任何文本,任何尝试删除文本的操作也不会引发错误。 对于Entry控件,可以使用delete()方法来清空文本。例如,如果您的Entry控件称为my_entry,则以下代码将清空文本内容: ```python my_entry.delete(0, 'end') ``` 上面的代码中,0表示输入框中的第一个字符,并从该位置开始删除所有字符,直到输入框的末尾。这个方法也适用于my_entry不包含文本的情况。 总的来说,这些简单的方法可以很容易地清空文本框,并开始新的工作。无论是使用Text还是Entry控件,都可以使用delete()方法来清空文本,只需指定要删除的文本的位置或范围即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值