python - 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)
`
解决方案
可以使用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
推荐阅读
- javascript - 正则表达式:匹配两个字符串之间的每个字符
- azure-devops - 如何在 Azure Devops 管道上正确使用表达式结果作为布尔值?
- python - “TypeError:只有整数标量数组可以转换为标量索引”在计算二维数组中 1 的数量时
- r - 积极匹配词性标记文本中的极性问题
- javascript - 散景 CustomJS 饼图
- javascript - 如何在 fullcalendar 3.10 javascript 的更新/删除对话框中添加 30 分钟到 startdate
- python - 搜索固定宽度文件并使用 python 从文件中的特定位置返回搜索结果
- sql - 在 sql 中使用 varchar 列进行过滤
- solr - Solr 在基于美元的查询后无法识别集合
- c - 具有相同类型子对象的循环链表的父对象