天道酬勤,学无止境

如何从 tkinter 文本小部件中删除所有内容?(How to erase everything from the tkinter text widget?)

问题

我正在为一些聊天程序开发一个 GUI。 对于用户的输入,我有 Text() 小部件,消息通过“Return”发送,然后我清理 Text()。 但尽我所能,我无法删除返回按钮创建的最后一个“\n”。

这是我这部分的代码:

def Send(Event):
   MSG_to_send=Tex2.get("1.0",END)
   client.send(MSG_to_send)
   Tex2.delete("1.0",END)

期待优惠)

回答1

您的问题很可能是您的绑定是插入换行符之前发生的。 您删除了所有内容,但随后插入了换行符。 这是由于文本小部件工作方式的本质——小部件绑定发生在类绑定之前,而类绑定是用户输入实际插入小部件的位置。

该解决方案可能会类绑定之后调整您的绑定(例如,通过绑定到<KeyRelease>或调整绑定标签)。 但是,如果没有看到您是如何进行绑定的,我就不可能确定这是您的问题。

另一个问题是,当您获得文本时(使用Tex2.get("1.0",END) ),您获得的文本可能比您预期的要多。 tkinter 文本小部件保证在小部件的最后一个字符之后总是有一个换行符。 要获取用户在没有此换行符的情况下输入的内容,请使用Tex2.get("1.0","end-1c") 。 或者,您可能希望在将文本小部件发送到客户端之前从文本小部件中删除所有尾随空格。

回答2

使用字符串,您可以删除最后一个字符:

msg = msg[:-2]

您还可以使用以下方法删除字符串末尾的所有空格(包括换行符):

msg = msg.rstrip()

行。 阅读您的评论后,我认为您应该查看此页面:Tkinter 文本小部件

解释的地方:

“如果您在标记之前插入或删除文本,则该标记将与其他文本一起移动。要删除标记,您必须使用*mark_unset*方法。删除标记周围的文本不会删除标记本身。”

- - 编辑 - -

我的错误,忽略上面的段落。 标记与换行无关。 正如 Bryan 在他的回答中解释的那样: tkinter 文本小部件保证在小部件的最后一个字符之后总是有一个换行符。

标签

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 如何使用tkinter中的按钮设置`Entry`小部件的文本/值/内容(How to set the text/value/content of an `Entry` widget using a button in tkinter)
    问题 我正在尝试使用tkinter模块的GUI中的按钮设置Entry小部件的文本。 该GUI可以帮助我将数千个单词分为五个类别。 每个类别都有一个按钮。 我希望使用按钮可以极大地提高我的速度,并且我想每次都仔细检查单词,否则我将只使用该按钮并让GUI处理当前单词并带入下一个单词。 由于某些原因,命令按钮的行为不像我希望的那样。 这是一个例子: import tkinter as tk from tkinter import ttk win = tk.Tk() v = tk.StringVar() def setText(word): v.set(word) a = ttk.Button(win, text="plant", command=setText("plant")) a.pack() b = ttk.Button(win, text="animal", command=setText("animal")) b.pack() c = ttk.Entry(win, textvariable=v) c.pack() win.mainloop() 到目前为止,当我能够进行编译时,单击无济于事。 回答1 您可能要使用插入方法。 您可以在此处找到Tkinter Entry Widget的文档。 该脚本将文本插入Entry 。 可以在按钮的command参数中更改插入的文本。 from
  • Python/Tkinter:如何将文本小部件内容设置为变量的值?(Python/Tkinter: How to set text widget contents to the value of a variable?)
    问题 我正在编写一个程序来协助我工作中可以自动化的一个微不足道的部分。 我在这里的目的是: 将一大块纯文本复制并粘贴到 Tkinter 文本小部件中使用粘贴的文本块作为变量的值,以便变量可以将某些字符拉出并返回到行中。 我有一些功能正常的代码。 例如,这是我的文本小部件和用于获取和打印其内容的代码行: textBox = Text(root) textBox.focus_set() def get_input(): print textBox.get(1.0, 'end-1c') 然后我使用一个使用命令get_input的按钮。 它适用于打印小部件的内容。 现在我知道如何正确调用内容并“获取”它们,我想了解如何将这些内容(字符串)分配给变量的值。 回答1 我想你想要的是这个,它会删除所有的文本,然后插入一个变量。 def set_input(value): text.delete(1.0, "END") text.insert("END", value) 仅限 Python 2.x,3 要求 Tk 命名空间中的“END”为 END。 回答2 def set_value(): text.insert("end-1c",value)
  • 如何在Tkinter中获取文本结束位置的行和列?(How do I get the line and column of the end position of text in Tkinter?)
    问题 我的Tkinter GUI中有文本区域。 我想实现一个撤消功能,它将删除最后一行。 为此,我需要获取最后一行的行和列。 如何获得最后一行的行和位置? 一旦获得职位,如何删除该行? 我已经在Google上搜索了此文件,但没有任何有价值的链接。 回答1 最后一行的索引是"end"或tkinter常数END 。 tkinter总是在末尾插入不可见的换行符,因此它实际上表示用户输入的最后一个字符之后的索引。 您可以使用文本小部件的index方法获取行号和列号。 因此,例如,使用以下命令获取最后一个字符的行/列: pos = textwidget.index("end") 您可以向索引添加修饰符,以获取相对于另一个位置的位置。 例如,要获取行首的索引,您可以附加linestart (例如:“ 3.5 linestart”将给您3.0)。 您还可以通过附加“ -n字符”或“ -nc”来减去字符(例如:“ 3.5-1c”将为3.4)。 可以组合使用这些修饰符。 因此,如果要查找要从结尾开始的最后一行文本的开头(实际上是在tkinter添加的额外换行符之后),请备份一个字符以到达该行的结尾,然后使用“ linestart”开始: pos = textwidget.index("end-1c linestart") 值得一提的是,所有内容均已记录在案,而且非常容易找到。 在撰写本文时
  • 如何在已打包到左侧的现有小部件下打包tkinter小部件?(How to pack a tkinter widget underneath an existing widget that has been packed to the left side?)
    问题 我正在尝试编写一个基本的Tkinter GUI,该GUI在顶部具有一个Text小部件,然后在其下方对齐一个Button小部件,然后在该按钮下方有另一个Text小部件。 我遇到的问题是,在将Button小部件打包到左侧之后,当我接着打包第二个Text小部件时,它将其放在右侧的按钮旁边,而不是在按钮下方。 无论我为第二个Text小部件设置side参数是什么,这种情况都会发生。这是演示此行为的简单代码: from Tkinter import * root = Tk() w = Text(root) w.pack() x = Button(root, text="Hi there!") x.pack(side=LEFT) y = Text(root) y.pack(side=BOTTOM) root.mainloop() 那么,如何设置第二个“ Text窗口小部件,使其显示在按钮下方,而不是在按钮右侧? 回答1 通常,有两种解决布局问题的方法: 切换到使用网格。 进行您想要完成的布局变得非常容易。 Grid可能可以解决所有布局问题的95%(考虑到这一点,这真是令人惊讶-Tk与一位经理一起完成了大多数工具包都需要六项才能完成的工作!) 使用多个框架。 如果某些小部件需要自上而下堆叠,而某些部件则需要从左至右堆叠,那么您将无法始终获得将所有内容打包在一个框架中的功能。
  • 如何使用格式保存 Tkinter 文本小部件的内容(How to save contents of a Tkinter text widget with formatting)
    问题 我在 python 中使用 Tkinter 在文本窗口中显示输出。 我发现使用 'get' 函数可以从这个窗口中检索文本内容。 但是我有用不同背景颜色标记的文本部分。 是否可以将内容与这些颜色一起复制到文件中,比如 html 或 doc? 回答1 没有你想要的支持。 您可以调用.dump()方法,该方法将返回包括文本和标签在内的信息。 但是,这些数据不是标准格式,也不支持重新加载数据。可以编写软件将其重新加载,但您必须自己完成所有工作。 返回内容的最佳描述来自 tcl/tk 手册页。 它部分说明: 路径名转储?开关? 索引1?索引2? 返回从 index1 到但不包括 index2 的文本小部件的内容,包括有关标记、标签和嵌入​​窗口的文本和信息。 如果未指定 index2,则默认为 index1 后一个字符。 信息以下列格式返回: key1 value1 index1 key2 value2 index2 ... 可能的键值为 text、mark、tagon、tagoff、image 和 window。 对应的值为文本、标记名称、标签名称、图像名称或窗口名称。 索引信息是文本、标记、标签过渡、图像或窗口的开始的索引。 注意文档是针对 tcl 语言的。 在widget.dump(...)您可以将该方法称为widget.dump(...) ,它返回一个元组。
  • tkinter.Text:将变量绑定到小部件文本内容(tkinter.Text: binding a variable to widget text contents)
    问题 对这个问题使用独立于 Python 3.3 平台。 对于Entry小部件,您可以像这样将变量绑定到此小部件的文本内容(注意Entry构造函数中的textvariable参数): var = tkinter.StringVar() entryField = tkinter.Entry(master, textvariable=var) e.pack() var.set("a new value") # entryField text now updated with this value s = var.get() # whatever text now appears in entryField 然而,对于Text小部件,没有这样的变量绑定功能。 如果有兴趣,Windows 版本中的 Python 3.3 的类Text定义应该从 %python dir%/Lib/tkinter/__init__.py 中的第 2927 行开始。 如何使用Text小部件最好地模拟此变量绑定功能? 我的想法是将tkinter.StringVar绑定到Text小部件,然后获取/设置所有文本。 更新: 我最终继承了tkinter.Frame作为Text包装器,它接受一个textvariable构造函数参数,该参数预期作为tkinter.Variable实例。 在下面的示例中
  • 如何从Tkinter文本小部件获取输入?(How to get the input from the Tkinter Text Widget?)
    问题 如何从Text小部件获取Tkinter输入? 编辑 我问这个问题是为了帮助其他有同样问题的人-这就是为什么没有示例代码的原因。 这个问题困扰了我好几个小时,我用这个问题来教别人。 请不要把它当作一个真正的问题来打分-答案很重要。 回答1 要从文本框中获取Tkinter输入,必须向常规.get()函数添加更多属性。 如果我们有一个文本框myText_Box ,则这是检索其输入的方法。 def retrieve_input(): input = self.myText_Box.get("1.0",END) 第一部分, "1.0"表示应从第一行字符零(即:第一个字符)读取输入。 END是设置为字符串"end"的导入常量。 END部分表示要阅读直到到达文本框的末尾。 唯一的问题是它实际上在我们的输入中添加了换行符。 因此,为了修复它,我们应该将END更改为end-1c (感谢Bryan Oakley) -1c删除1个字符,而-2c删除2个字符,依此类推。 def retrieve_input(): input = self.myText_Box.get("1.0",'end-1c') 回答2 这是我用python 3.5.2做到的: from tkinter import * root=Tk() def retrieve_input(): inputValue=textBox.get
  • 只读 tkinter 文本小部件(Readonly tkinter text widget)
    问题 我想使用tkinter text widget作为readonly小部件。 它应该充当transcript区域。 我的想法是将这个成绩单保存在一个file ,每当用户写任何东西时,只需删除小部件的所有内容,然后再次重写。 代码将如下所示: transcript_entry = SimpleEditor() # SimpleEditor is inherited from ScrolledText transcript_entry.text.delete("1.0", END) # this is just a test string, it should be the contents of the transcript file transcript_entry.text.insert("1.0", "This is test transcript") transcript_entry.text.bind("<KeyPress>", transcript_entry.readonly) 而readonly函数将如下所示: def readonly(self, event): self.text.delete("1.0", END) # this is just a test string, it should be the contents of the
  • Tkinter Grid:如何定位小部件,以使它们不会粘在一起(Tkinter Grid: How to position widgets so they are not stuck together)
    问题 我正在尝试在测试UI的左上角和右上角创建两个Label窗口小部件。 问题是小部件被粘在一起,我希望它们之间有空间。 在研究中,我遇到了使用sticky,padx和pady选项的建议。 但是,无论我将什么参数传递给.grid(),我似乎都无法在小部件之间创建空间。 我知道无论两个小部件之间的列数和行数如何,如果所说的行/列为空,就好像它们不存在,并且小部件看上去粘在一起。 使用.grid()方法,如何定位小部件以免它们粘在一起? 到目前为止,这是我的代码: #!/usr/bin/python from Tkinter import * class MyApp: def __init__(self, parent): self.myParent = parent self.main_container = Frame(parent) self.main_container.grid(row=0, rowspan=2, column=0, columnspan=4) self.top_frame = Frame(self.main_container) self.top_frame.grid(row=0, column=0, columnspan=4) self.top_left = Frame(self.top_frame) self.top_left.grid(row=0
  • 如何清除/删除Tkinter Text小部件的内容?(How to clear/delete the contents of a Tkinter Text widget?)
    问题 我正在Ubuntu上的TKinter编写一个Python程序,以从“ Text小部件中的特定文件夹导入并打印文件名。 它只是将文件名添加到“ Text小部件中的先前filname中,但是我想先清除它,然后添加一个新的文件名列表。 但是我正在努力清除“ Text小部件的先前文件名列表。 有人可以解释如何清除Text小部件吗? 屏幕截图和编码如下: import os from Tkinter import * def viewFile(): path = os.path.expanduser("~/python") for f in os.listdir(path): tex.insert(END, f + "\n") if __name__ == '__main__': root = Tk() step= root.attributes('-fullscreen', True) step = LabelFrame(root, text="FILE MANAGER", font="Arial 20 bold italic") step.grid(row=0, columnspan=7, sticky='W', padx=100, pady=5, ipadx=130, ipady=25) Button(step, text="File View", font="Arial 8
  • Tkinter 全局绑定(Tkinter Global Binding)
    问题 是否可以用一行将所有小部件绑定到一个命令? 如果我可以输入一行而不是单独执行每个小部件,那就太好了。 回答1 您将在根窗口上使用 bind_all 方法。 这将适用于所有小部件(除非您从某些小部件中删除绑定标签“all”)。 请注意,这些绑定最后触发,因此如果您愿意,您仍然可以覆盖特定小部件上的应用程序范围的绑定。 这是一个人为的例子: import Tkinter as tk class App: def __init__(self): root = tk.Tk() root.bind_all("<1>", self.woot) label1 = tk.Label(text="Label 1", name="label1") label2 = tk.Label(text="Label 2", name="label2") entry1 = tk.Entry(name="entry1") entry2 = tk.Entry(name="entry2") label1.pack() label2.pack() entry1.pack() entry2.pack() root.mainloop() def woot(self, event): print "woot!", event.widget app=App() 您可能还对我对以下问题的回答感兴趣:在 Tkinter
  • 文本控件绑定后,如何在Tkinter文本控件中绑定自事件?(How to bind self events in Tkinter Text widget after it will binded by Text widget?)
    问题 我想在Text窗口小部件类绑定之后绑定自事件,以便在调用绑定函数时更改窗口小部件的文本。 我的绑定(例如self.text.bind("<Key>", self.callback)在Text小部件中的内容更改之前被调用。 回答1 在您的情况下,发生的事情是您的打印值绑定发生在类绑定之前,而类绑定实际上是在接受用户输入并将其放入小部件中。 有几种方法可以解决此问题。 您可以绑定到<KeyRelease>而不是<KeyPress> ,或者可以使用内置的条目验证功能在每次按键时调用您的代码。 使用该解决方案,您将获得所有需要的数据-更改前的值,更改后的值,按下的键等。 另一种选择是更改事件处理的顺序。 由于您的问题专门询问了如何更改顺序,这就是我要解决的问题。 即使当您执行诸如entry.bind(...)类的entry.bind(...)时,绑定似乎与窗口小部件相关联,您实际上entry.bind(...)将绑定分配给“绑定标签”(或“ bindtag”)。 默认情况下,每个窗口小部件都有一个绑定标记,该标记与窗口小部件的名称相同。 其他绑定标签包括小部件的类(例如“ Entry”),根窗口的路径(例如:“。”)和特殊标签“ all”。 为小部件分配了一组绑定标签,这些绑定标签在接收到事件时将按顺序进行处理。 默认顺序从最不具体到最不具体:小部件,类,顶层等。
  • 如何删除未保存的 tkinker 标签?(How to delete unsaved tkinker label?)
    问题 我制作了这个程序,我将标签放在网格上而不将它们保存在变量中。 我这样做是因为这样我就可以循环遍历一个类列表并从每个类中获取数据并将它们添加到一行中。 这是其中的一小部分: self.collum = 0 for i in self.gui_resource_list: Label(text=i.get_name(), relief="groove", width=15).grid(column=self.column, row=0) Label(text=i.get_buyPrice(), relief="groove", width=15).grid(column=self.column, row=1) Label(text=i.get_salePrice(), relief="groove", width=15).grid(column=self.column, row=2) Label(text=i.arrow, relief="groove", width=15).grid(column=self.column,row=3) self.column += 1 所以这将生成一个类似表格的布局。 然后有一个更新所有值的按钮再次运行 for 循环。 所以它基本上是在旧标签之上绘制新标签。 这不好,因为当您在 300 回合时,有 300 个标签乘以gui
  • Tkinter:设置StringVar之后事件,包括按下的键(Tkinter: set StringVar after <Key> event, including the key pressed)
    问题 每次将一个字符输入到“ Text窗口小部件中时,我都希望获取该窗口小部件的内容,并从某个数字中减去其长度(基本上是“剩下的x个字符”)。 但是StringVar()总是落后一个事件。 根据我的收集,这是因为在字符输入到“文本”小部件中之前已处理了事件。 这意味着,如果我在该字段中输入3个字符,然后输入第4个字符,则StringVar会更新,但长度仍为3个字符,那么当我输入第5个字符时,它将更新为4个字符。 有没有办法使两者保持一致? 这是一些代码。 我删除了无关的部分。 def __init__(self, master): self.char_count = StringVar() self.char_count.set("140 chars left") self.post_tweet = Text(self.master) self.post_tweet.bind("<Key>", self.count) self.post_tweet.grid(...) self.char_count = Label(self.master, textvariable=self.foo) self.char_count.grid(...) def count(self): self.x = len(self.post_tweet.get(1.0, END)) self.char
  • 如何在Tkinter文本框中设置对齐方式(How to set justification on Tkinter Text box)
    问题 问题 如何在Tkinter的ScrolledText小部件中更改特定行的对齐方式? 我原始错误的原因是什么? 背景 我目前正在开发Tkinter文本框应用程序,并且正在寻找更改行对齐方式的方法。 最终,我希望能够将特定的行从LEFT ALIGN更改为RIGHT ALIGN ,以此类推。现在,我只需要了解如何更改整个文本框的对齐方式,尽管将进一步感谢您的帮助。 我一直在使用Effbot.org帮助我完成任务。 这是我的ScrolledText小部件的代码: 代码 def mainTextFUN(self): self.maintextFrame = Frame (root, width = 50, height = 1, ) self.maintextFrame.grid(row = 1, column = 1, sticky = N, columnspan = 1, rowspan = 1) self.write = ScrolledText(self.maintextFrame, justify(CENTER), width = 100, height = 35, relief = SUNKEN, undo = True, wrap = WORD, font = ("Times New Roman",12), ) self.write.pack() 运行此命令时,出现错误。
  • 在Python TkInter中更新标签文本(Update Label Text in Python TkInter)
    问题 有没有可能创建使用字符串和变量作为文本的TkInter标签的方法? 例如: name = "bob" Label(root, text="hello, my name is "+name) 但是,与其在创建标签时仅使标签的文本成为上述内容,还不如不参考标签实例本身,而是在“名称”更改时让标签更新文本。 有人知道这是否可能吗? 回答1 您不能完全按照自己的要求进行操作-您不能同时将静态字符串和变量都与标签相关联。 您可以做一些事情以获得理想的效果,但是您所做的只是增加复杂性而没有实际收益。 例如,您可以将StringVar的实例分配给Label小部件的textvariable属性。 当您这样做时,对变量的任何更新都会更新标签。 但是,最终您必须进行函数调用来更新变量,因此,通过直接调用函数来更新标签并不会带来任何好处。 另一种选择是使用两个标签-一个用于静态文本,一个用于变量。 无边框并排放置,使用户不会注意到。 然后,当您更新变量时,您将获得理想的效果。 但是,您仍然需要进行函数调用来设置变量,因此您实际上并不会获得太多收益。 还有一种选择是使用StringVar两个实例-一个用于标签,另一个用于名称。 您可以在name变量上放置跟踪,以便在其更改时使用静态字符串和name变量的值自动更新另一个变量,这将导致标签自动更新。 再次,但是,您必须进行函数调用才能使所有内容动起来
  • 如何在python 3.4.x中的tkinter文本小部件中显示渲染的html内容(How to display rendered html content in text widget of tkinter in python 3.4.x)
    问题 我想在python 3.4中的tkinter文本小部件中显示我的邮件。 使用message.HTMLBody可以将其打印为HTML格式。 如何在我的文本小部件中呈现它并显示内容 回答1 我设法使用tkhtml呈现了简单的html标签。 使用pip3 install tkinterhtml进行pip3 install tkinterhtml ,然后使用软件包示例: from tkinterhtml import HtmlFrame frame = HtmlFrame(root, horizontal_scrollbar="auto") frame.set_content("<html></html>") 如果要直接呈现网页,可以执行以下操作以请求并呈现它: import urllib frame.set_content(urllib.request.urlopen("https://duckduckgo.com").read().decode()) 希望能帮助到你 :) 回答2 除了非常基本的HTML tkinter之外,没有任何东西不是为此目的而构建的。 tkhtml是一种选择,但是除基本html之外的任何内容都想在其他地方查找。 Tk可以做很多令人惊奇的事情,但是嵌入网页/内容并不是其中之一。 如果您只想从邮件中获取文本/一些基本图像/格式,则可以抓取数据
  • 如何在python中粘贴从键盘复制的文本(How do I paste the copied text from keyboard in python)
    问题 如果我执行此代码,它工作正常。 但是,如果我使用键盘( Ctrl + C )复制某些内容,那么如何将剪贴板上的文本粘贴到 python 中的任何输入框或文本框中? import pyperclip pyperclip.copy('The text to be copied to the clipboard.') spam = pyperclip.paste() 回答1 您需要将pyperclip.paste()传递到您为条目或文本小部件插入放置字符串的相同位置。 看看这个示例代码。 有一个按钮可以复制输入字段中的内容,还有一个按钮可以粘贴到输入字段中。 import tkinter as tk from tkinter import ttk import pyperclip root = tk.Tk() some_entry = tk.Entry(root) some_entry.pack() def update_btn(): global some_entry pyperclip.copy(some_entry.get()) def update_btn_2(): global some_entry # for the insert method the 2nd argument is always the string to be # inserted to the
  • Python记录到Tkinter文本小部件(Python Logging to Tkinter Text Widget)
    问题 那里有没有人提供如何在Python中设置登录到Tkinter文本小部件的示例? 我已经在多个应用程序中看到了此用法,但无法弄清楚如何将日志记录定向到除日志文件以外的任何内容。 回答1 除了上述答案之外:尽管为此(在本主题以及在其他主题中)有很多建议的解决方案,但我仍在努力地自己完成这项工作。 最终,我进入了Moshe Kaplan的文本处理程序类,该类使用ScrolledText小部件(可能比ScrollBar方法更容易)。 我花了一些时间弄清楚如何在线程化应用程序中实际使用Moshe的类。 最后,我创建了一个最小的演示脚本,该脚本演示了如何使其全部工作。 因为这可能对其他人有帮助,所以我在下面分享。 在我的具体情况,我想登录到GUI和文本文件; 如果不需要,只需删除logging.basicConfig中的filename属性。 import time import threading import logging try: import tkinter as tk # Python 3.x import tkinter.scrolledtext as ScrolledText except ImportError: import Tkinter as tk # Python 2.x import ScrolledText class TextHandler(logging
  • tkinter 小部件界面交互按钮(tkinter widget interface interactive button)
    问题 我对交互式 python 编程很陌生,所以请耐心等待。 我在 Python 3.3 中使用 PyCharm。 我正在尝试构建以下内容: 我想生成一个函数,该函数拉出带有两个文本输入字段和两个按钮的交互式窗口: - 第一个按钮 (START) 运行一个小的文本搜索功能(我已经编写并测试过),而第二个按钮 (QUIT) 将退出应用程序。 - 第一个文本输入字段需要一个要搜索的字符串(例如:“Hello Stack World”),而另一个文本输入字段需要一个要在第一个输入字符串中搜索的字符串(例如:“Stack”)。 计划是,一旦填写了两个文本字段,按“开始”按钮将启动文本搜索功能,而“退出”按钮将停止程序。 问题是,“退出”按钮按其应有的方式工作,但“开始”按钮什么也不做。 我认为它实际上将我的程序发送到无限循环中。 任何和所有帮助都非常感谢。 我是界面/小部件编程的新手。 提前致谢! 这是我现在拥有的代码: import tkinter from tkinter import * class Application(Frame): def text_scan(self): dataf = str(input()) '''string to be searched''' s = str(input()) ''' string to search for''' ''' ... I