当前位置: 首页 > 知识库问答 >
问题:

如何在列表框中显示所选项目的详细信息,使用tkinter滚动条

林俭
2023-03-14

有两条线。一个是提供号码,另一个是使用tkinter的,一旦号码产生,tkinter就会捕获该号码。

我使用滚动条来显示数字序列。但是,我想看看我点击的内容的一些细节,比如平方数。

例如,如果我在结果中单击8,我可以得到64个详细信息

我的想法

那么如何做到这一点呢?我目前的代码如下:

from concurrent.futures import ThreadPoolExecutor
from tkinter import *
from time import sleep
global root
global scrollbar
global listb

def my_func1():
    global root
    global Scrollbar
    root = Tk()
    lbl1 = Label(root, text="Result:", fg='black',
                 font=("Helvetica", 16, "bold"))
    lbl2 = Label(root, text="Detail:", fg='black',
                 font=("Helvetica", 16, "bold"))
    lbl1.grid(row=0, column=0,  sticky=W)
    lbl2.grid(row=2, column=0,  sticky=W)

    frm = Frame(root)
    frm.grid(row=1, columnspan=2, sticky=N + S + W + E)

    try:
        scrollbar = Scrollbar(frm, orient=VERTICAL)
        global listb
        listb = Listbox(frm, yscrollcommand=scrollbar.set, width=50)
        scrollbar.config(command=listb.yview)
        scrollbar.pack(side=RIGHT, fill=Y)
        listb.pack(fill=BOTH, expand=YES)
        detail = Listbox(root, height=10, font=("Helvetica", 12))
        detail.grid(row=6, columnspan=2, sticky=E + W + N)
    except:
        pass
    root.mainloop()

def my_func2():
    global listb
    sleep(0.1)
    for i in range(1000):
        sleep(0.3)
        vw = listb.yview()
        listb.insert(END, i)
        listb.yview_moveto(vw[-1])
        print(i)
executors_list = []

with ThreadPoolExecutor(max_workers=5) as executor:
    executors_list.append(executor.submit(my_func1))
    executors_list.append(executor.submit(my_func2))

共有1个答案

缪宪
2023-03-14

谢谢大家的帮助。答案如下:

import time, threading
from time import sleep
from tkinter import *
from tkinter import messagebox
global listb

class App(object):
    def __init__(self, root):
        def onselect(evt):
            w = evt.widget
            index = int(w.curselection()[0])
            value = w.get(index)
            detail.delete('1.0', END)
            detail.insert(END,str(value*value))
        lbl1 = Label(root, text="Result:", fg='black',
                    font=("Helvetica", 16, "bold"))
        lbl2 = Label(root, text="Detail:", fg='black',
                        font=("Helvetica", 16, "bold"))
        lbl1.grid(row=0, column=0,  sticky=W)
        lbl2.grid(row=2, column=0,  sticky=W)

        frm = Frame(root)
        frm.grid(row=1, columnspan=2, sticky=N + S + W + E)


        scrollbar = Scrollbar(frm, orient=VERTICAL)
        global listb
        listb = Listbox(frm, yscrollcommand=scrollbar.set, width=50)
        scrollbar.config(command=listb.yview)
        scrollbar.pack(side=RIGHT, fill=Y)
        listb.pack(fill=BOTH, expand=YES)

        detail = Text(root, height=10, font=("Helvetica", 12))
        detail.grid(row=6, columnspan=2, sticky=E + W + N)
        listb.bind('<<ListboxSelect>>', onselect)


def InfiniteProcess():
    global listb
    sleep(0.1)
    for i in range(1000):
        sleep(0.3)
        vw = listb.yview()
        listb.insert(END, i)
        listb.yview_moveto(vw[-1])
        #print(i)

finish = False
Process = threading.Thread(target=InfiniteProcess)
Process.start()

mainWindow = Tk()
app = App(mainWindow)
mainWindow.mainloop()
finish = True
Process.join()
 类似资料:
  • 问题内容: 我在单选模式下设置了2个单独的列表框。当我从中选择一个项目时,它会突出显示,但是当我从中选择一个项目时,它会被突出显示,并且来自的项目会保持活动状态,但不会突出显示。如何同时突出显示两者? 问题答案: 简短答案:将每个列表框的属性设置为 Tkinter起源于X窗口系统。X有一个称为“选择”的概念,类似于系统剪贴板(更准确地说,剪贴板是“ PRIMARY”选择)。默认情况下,几个tkin

  • 所以我有一个名为interestingpoint的类,其中包含变量'name'、'coordines'。我创建了一个包含有趣地点的列表,然后在地图上添加标记,如下所示: 所以主要的问题是,当我点击任何标记时,我可以获得它的细节吗?当我点击标记时,我想显示那个地方的描述和图片。

  • 我正在使用SimpleCursorAdapter用数据库中的名称列填充微调器。 适配器: 光标加载器: 如何在微调器(名称列)中选择一个项目时,在一些文本视图中显示所有其他详细信息?

  • 我正在为我的大学项目开发一个电子商务网站(spring MVC、Java、mySql、Hibernate)。我有各种模型,如客户,产品,订单,客户历史等。 我能够显示所有客户的详细信息(在管理页面)和所有产品供客户浏览。 但我面临的问题是,我如何展示一个客户的订单和订单历史? 我的orders表有orderId、productId、quantity和total Price。但是要显示产品名,我必须

  • 我使用以下代码在WooCommerce管理订单详细信息页面的订单项表中显示自定义产品元: 它显示“前缀tempiconsegna”,这是自定义图元,如: 可在3天内提供 我的问题是,如果我改变了产品的可用性,它也改变了以前的订单。 当我更新产品的可用性时,如何在不改变的情况下显示订单时的值?