在我的一段代码中,我的脚本生成一个字符串以将其复制到一个 scolled 文本小部件中。如果字符串的大小不是很重,这个过程没有任何问题,但是当字符串很重时,脚本不能将它粘贴到滚动的文本小部件中。当它发生时,脚本会崩溃,并且终端中会出现一条错误消息:(unable to alloc 27 bytes这不是异常事件)。
在崩溃之前,我通过sys.getsizeof函数获得了字符串的字节大小,它是 230031360 字节(230 MB)。
在这些情况下,用户可以解决选择在文本文件中写入输出消息的问题,但是如果用户尝试在 scolled 文本小部件中写入一个粗字符串怎么办?在这种特定情况下,我很想显示一个消息框来建议用户将输出写入文本文件,但是我如何理解脚本是否可以在滚动文本小部件中写入字符串?Python中字符串的字节限制是多少?
更新:
我写了一个例子来告诉你问题发生在哪里。主窗口将在大约两分钟内崩溃并在终端中显示错误消息unable to alloc 28 bytes:
from tkinter import *
from tkinter import ttk, scrolledtext
import ipaddress
def GiveMeHosts():
ls = []
for host in ipaddress.ip_network("10.0.0.0/8").hosts():
ls.append(str(host))
return ls
parent = Tk()
parent.geometry("400x350")
parent.title("The window will crash..")
MyWidget=scrolledtext.ScrolledText(parent, wrap=WORD, width=36, height=14, font=("Segoe UI", 9), state="normal")
MyWidget.pack()
parent.update()
# the string "hosts" is too long, and "MyWidget" can't manage it!
hosts …Run Code Online (Sandbox Code Playgroud)