gpt4 book ai didi

python - wxpython textctrl 打印到特定行

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

我一定是使用了错误的术语进行谷歌搜索,因为我找不到我要找的东西。任何帮助表示赞赏。

如何写入 textctrl 中的特定行?

当前我的程序处理文件,处理后文件会在文本 ctrl 中列出。我想要达到的目标就是这个。列出 textctrl 中的文件,其名称后带有文字处理。处理时,我需要重新写入完全相同的位置,但这次用“完成”一词替换“文字处理”。我还需要记住哪个文件打印到哪一行。我正在线程化,因此文件不一定会按照打开的顺序完成,因为它们的大小不同。

感谢您的帮助!

# This function opens files for processing.
def Encrypt(self, event):
"""
Runs the thread
"""
self.file2process = ""
dlg = wx.FileDialog(self, "Select files", self.file2process, "", "*.*", wx.OPEN |wx.MULTIPLE | wx.CHANGE_DIR)

if dlg.ShowModal() == wx.ID_OK:
self.file2process = dlg.GetPaths()

for fname in self.file2process:
EncryptThread(fname)

# This is one of two functions that I would need to modify but same prociple would apply to both so only including this one.

def run(self):
"""Run Worker Thread."""
# This is the code executing in the new thread.

keys = {char: chr(i) for i, char in enumerate(self.key)}

with open(self.fname,'r') as f:
with open(self.fname + '.tmp', 'w') as temp:
for data in f:
match = ''.join([keys[char] for char in data if char in keys])
temp.write(match)

os.remove(self.fname)
os.rename(self.fname + '.tmp', self.fname)

msg = self.fname
wx.CallAfter(Publisher().sendMessage, "update", msg)

# This function updates the textctrl.
def updateDisplay(self, msg):
"""
Receives data from thread and updates the display
"""
data = msg.data + "\n"
self.updateText.WriteText(data)

最佳答案

听起来您混淆了两个不同的进程:一个写入 TextCtrl,另一个保存和操作字符串。为了您自己的理智,您应该在 GUI 设计中将这两个过程分开。

我的建议是在将文件附加到 TextCtrl 的同时将已处理的文件列表保存到列表中。然后,您可以使用列表推导式和 re 模块非常轻松地对该列表进行操作。所有这些添加的操作将使 TextCtrl 小部件中的文本不受干扰,这正是 wxPython 众神的意图。

如果您可以提供一些显示您正在做什么的代码,我可以提供一些更清晰的示例。

关于python - wxpython textctrl 打印到特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18725872/

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