首页 > 解决方案 > Python tkinter GUI 列表框

问题描述

我想禁用 gui 应用程序上删除所选项目的删除按钮。如果没有做出选择,则应禁用该按钮。有什么办法可以做到吗?生病把我的代码贴在下面`

from tkinter import *
import tkinter
from tkinter import simpledialog
from tkinter import messagebox


def delete():
    if lb1.curselection():
        b= lb1.curselection()[0]
        lb1.delete(first=b,last=None)




B2=Button(root,text="Delete",command=delete)
B2.grid(column=8,row=5)  
k=lb1.curselection()
if k[0]==0:
    B2.config(state = DISABLED)
else:
    B2.config(state = NORMAL)

`

标签: pythontkinterlistbox

解决方案


可以使用after这里的方法,如下:

from tkinter import *
import tkinter
from tkinter import simpledialog
from tkinter import messagebox


def delete():
    if lb1.curselection():
        b= lb1.curselection()[0]
        lb1.delete(first=b,last=None)

def check_selection():
    k=lb1.curselection()
    if k:
        B2.config(state = NORMAL)
    else:
        B2.config(state = DISABLED)
    root.after(100, check_selection)

B2=Button(root,text="Delete",command=delete)
B2.grid(column=8,row=5)  

root.after(100, check_selection)

如果在列表框中进行了选择,该after方法将继续检查(每 100 毫秒)。

编辑

100方法中的值after可以更改为适合您的任何值。请记住,单位是ms


推荐阅读