Python Tkinter长列表显示在网格中

Python Tkinter长列表显示在网格中,python,python-3.x,list,user-interface,tkinter,Python,Python 3.x,List,User Interface,Tkinter,我有一个巨大的列表,里面有将近1074个应用程序名称 ['10 Best Foods for You' '104 找工作 - 找工作 找打工 找兼職 履歷健檢 履歷診療室' '11st' ... 'Hotwire Hotel & Car Rental App' 'Housing-Real Estate & Property' 'Houzz Interior Design Ideas'] 我想在下面相同的窗口中显示所有应用程序,但它们都不可见。 我在控制台中遇到以下错误:

我有一个巨大的列表,里面有将近1074个应用程序名称

['10 Best Foods for You' '104 找工作 - 找工作 找打工 找兼職 履歷健檢 履歷診療室' '11st' ...
 'Hotwire Hotel & Car Rental App' 'Housing-Real Estate & Property'
 'Houzz Interior Design Ideas'] 
我想在下面相同的窗口中显示所有应用程序,但它们都不可见。

我在控制台中遇到以下错误:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 1705, in __call__
    return self.func(*args)
  File "C:/Users/Samit Patil/Desktop/PlaystoreStudy Project/test_gui.py", line 496, in <lambda>
    tk.Button(frame, text='Select query', width='15', font=("Open Sans", 13, 'bold'), bg='brown', fg='white',command=lambda c=i:query(c+1)).grid(row=i,column=1,sticky=W)
  File "C:/Users/Samit Patil/Desktop/PlaystoreStudy Project/test_gui.py", line 439, in query
    populate(frame)
  File "C:/Users/Samit Patil/Desktop/PlaystoreStudy Project/test_gui.py", line 418, in populate
    tk.Label(frame, text=l1[5], width='80',anchor=W,relief=GROOVE, height="4", font=("Calibri", 10, 'bold'), fg='black', bg='Green',wraplength=500).grid(row=i,column=0,sticky=W)
  File "C:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 2766, in __init__
    Widget.__init__(self, master, 'label', cnf, kw)
  File "C:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 2299, in __init__
    (widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: character U+1f602 is above the range (U+0000-U+FFFF) allowed by Tcl
Tkinter回调中出现异常 回溯(最近一次呼叫最后一次): 文件“C:\ProgramData\Anaconda3\lib\tkinter\\uuuuu init\uuuuu.py”,第1705行,在调用中__ 返回self.func(*args) 文件“C:/Users/Samit Patil/Desktop/PlaystoreStudy Project/test_gui.py”,第496行,在 tk.按钮(边框,text='Select query',width='15',font=('Open Sans',13',bold'),bg='brown',fg='white',command=lambda c=i:query(c+1)).grid(行=i,列=1,粘滞=W) 文件“C:/Users/Samit Patil/Desktop/PlaystoreStudy Project/test_gui.py”,第439行,在查询中 填充(框架) 文件“C:/Users/Samit Patil/Desktop/PlaystoreStudy Project/test_gui.py”,第418行,在填充中 tk.标签(框架,文本=l1[5],宽度=80',锚定=W,浮雕=GROOVE,高度=4',字体=(“Calibri”,10',粗体'),fg='黑色',bg='绿色',wraplength=500).网格(行=i,列=0,粘性=W) 文件“C:\ProgramData\Anaconda3\lib\tkinter\\uuuuu init\uuuuu.py”,第2766行,在\uuu init中__ 小部件。_u初始化(自、主、标签、cnf、kw) 文件“C:\ProgramData\Anaconda3\lib\tkinter\\uuuuu init\uuuuu.py”,第2299行,在\uuuu init中__ (widgetName,self._w)+额外+自选项(cnf)) _tkinter.TclError:字符U+1f602高于Tcl允许的范围(U+0000-U+FFFF) 我的代码:

        qy14apps = Toplevel(screen2)
        qy14apps.title("Select one app")
        adjustWindow(qy14apps) # configuring the window
        l1=list_apps()
        print (len(l1))
        def onFrameConfigure(canvas):

            canvas.configure(scrollregion=canvas.bbox("all"))

        def populate(frame):

            for i in range(len(l1)):
                tk.Label(frame, text=l1[i], width='80',anchor=W,relief=GROOVE, height="4", font=("Calibri", 10, 'bold'), fg='black', bg='Green',wraplength=500).grid(row=i,column=0,sticky=W)
                #l2=Label(text="\n", bg='white')
                #l2.grid(row=i+1,column=0)
                tk.Button(frame, text='Select app', width='15', font=("Open Sans", 13, 'bold'), bg='brown', fg='white',command="").grid(row=i,column=1,sticky=W)

        canvas = tk.Canvas(qy14apps, borderwidth=0, background="#ffffff")
        frame = tk.Frame(canvas, background="#ffffff")
        vsb = tk.Scrollbar(qy14apps, orient="vertical", command=canvas.yview)
        canvas.configure(yscrollcommand=vsb.set)

        vsb.pack(side="right", fill="y")
        canvas.pack(side="left", fill="both", expand=True)
        canvas.create_window((4,4), window=frame, anchor="nw")

        frame.bind("<Configure>", lambda event, canvas=canvas: onFrameConfigure(canvas))
        populate(frame)
qy14apps=Toplevel(屏幕2)
qy14apps.title(“选择一个应用程序”)
调整窗口(qy14apps)#配置窗口
l1=列表_应用程序()
打印(透镜(l1))
def onFrameConfigure(画布):
configure(scrollregion=canvas.bbox(“全部”))
def填充(帧):
对于范围内的i(len(l1)):
标签(框架,文本=l1[i],宽度=80',锚定=W,浮雕=GROOVE,高度=4',字体=(“Calibri”,10',粗体'),fg='黑色',bg='绿色',wraplength=500).网格(行=i,列=0,粘性=W)
#l2=标签(text=“\n”,bg='white')
#l2.网格(行=i+1,列=0)
tk.按钮(框架,文本='Select app',宽度='15',字体=(“开放式Sans”,13',粗体'),bg='brown',fg='white',command=).grid(行=i,列=1,粘性=W)
canvas=tk.canvas(qy14apps,borderwidth=0,background=“#ffffff”)
frame=tk.frame(画布,背景=“#ffffff”)
vsb=tk.Scrollbar(qy14apps,orient=“vertical”,command=canvas.yview)
configure(yscrollcommand=vsb.set)
vsb.pack(side=“right”,fill=“y”)
canvas.pack(side=“left”,fill=“both”,expand=True)
canvas.create_window((4,4),window=frame,anchor=“nw”)
frame.bind(“”,lambda事件,canvas=canvas:onFrameConfigure(canvas))
填充(框架)
我不明白我哪里出错了,是不是因为名单太多了? 我已经将同样的概念应用于20个元素的列表,然后它就起作用了。
任何帮助都是值得赞赏的。谢谢。

我宁愿将大量数据插入列表框,并将按钮链接到通过列表框变量检索所选列表项的函数

listboxvariablename.curselection()

要删除花括号,您可以绕过每个列表框条目,在将列表插入列表框之前循环列表,并通过其索引引用该条目。这将在将条目插入列表框时去掉大括号。

很可能您遇到了一个问题,您可能会在这么高的列表中遇到问题,但您遇到的具体错误是完全不同的:基本上,Tkinter(或Tk)的Unicode处理被彻底破坏。这里可能的解决方案:这并不能解决实际的错误,即使使用列表框也会出现这种错误。(
字符U+1f602高于Tcl允许的范围(U+0000-U+FFFF)