gpt4 book ai didi

python - 如何从 Python 中的多行 Tkinter 文本框读取输入(逐行)?

转载 作者:行者123 更新时间:2023-11-28 22:54:43 25 4
gpt4 key购买 nike

通过在 Python 中使用过程编程范例,我编写了一个程序,它逐行读取文件(比如 File.txt)的输入并打印它。下面是示例:

脚本:

import fileinput
for line in fileinput.input(r'D:\File.txt'):
line = line.replace(" ", "")
line = line[0:-1]
print(line)

结果:

注意:例如,如果“File.txt”包含两行,第一行为“line1”,第二行为“line2”,则输出为:

line1
line2

通过使用“Tkinter Multiline TextBox”而不是文件(在上面的示例 File.txt 中),我希望通过面向对象的编程范例获得相同的结果。

我有创建多行 Tkinter 文本框的以下代码:

import tkinter as tki # Tkinter -> tkinter in Python3
class App(object):

def __init__(self):
self.root = tki.Tk()

# create a Frame for the Text and Scrollbar
txt_frm = tki.Frame(self.root, width=200, height=200)
txt_frm.pack(fill="both", expand=True)

# ensure a consistent GUI size
txt_frm.grid_propagate(False)

# implement stretchability
txt_frm.grid_rowconfigure(0, weight=1)
txt_frm.grid_columnconfigure(0, weight=1)

# create a Text widget
self.txt = tki.Text(txt_frm, borderwidth=3, relief="sunken")
self.txt.config(font=("consolas", 12), undo=True, wrap='word')
self.txt.grid(row=0, column=0, sticky="nsew", padx=2, pady=2)

# create a Scrollbar and associate it with txt
scrollb = tki.Scrollbar(txt_frm, command=self.txt.yview)
scrollb.grid(row=0, column=1, sticky='nsew')
self.txt['yscrollcommand'] = scrollb.set

def retrieve_input():
input = self.txt.get("0.0",END)
print(input)
app = App()
app.root.mainloop()
app.retrieve_input()

现在我的问题是,一旦我运行上面的代码,就会出现“Tkinter Multiline TextBox”,我在 Tkinter TextBox 中输入 4 行:

ABC
XYZ
PQR
QAZ

但我没有得到确切的想法/实现方式,即如何从 Tkinter TextBox 中逐行读取这些行并将它们用于我的程序中的进一步处理。

我使用的 Python 版本是 3.0.1。请帮助...

最佳答案

根据文档,tkinter.text 上的get 方法将只返回字符串,包括新行 \n。您不能将 tkinter.text 视为文件,但您可以使用其他方式。

  1. 全部阅读并将它们分成一个列表。然后循环列表。

    def retrieve_input():
    text = self.txt.get('1.0', END).splitlines()
    for line in text:
    ...
  2. 使用io.StringIO 来模拟文件,但在这种情况下它不会去除换行符。

    def retrieve_input():
    text = io.StringIO(self.txt.get('1.0', END))
    for line in text:
    line = line.rstrip()
    ...

关于python - 如何从 Python 中的多行 Tkinter 文本框读取输入(逐行)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17746817/

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