我想知道是否有一种简单的方法来使用Tkinter创建一个复选框网格.我正在尝试制作10行和10列的网格(所以100个复选框),这样每行只能选择两个复选框.

编辑:我正在使用spthon的python 2.7

到目前为止我所拥有的:

from Tkinter import*

master = Tk()

master.title("Select Groups")

rows=10

columns=10

for x in range(rows):

for y in range(columns):

Label(master, text= "Group %s"%(y+1)).grid(row=0,column=y+1)

Label(master, text= "Test %s"%(x+1)).grid(row=x+1,column=0)

Checkbutton(master).grid(row=x+1, column=y+1)

mainloop()

一旦选中了两个复选框,我正在尝试使用state =’Disabled’来使行变灰.

解决方法:

以下是使用您提供的10×10网格的示例.它应该为您提供如何实现它的基本概念.

只需确保保留对每个Checkbutton(示例中的框)以及每个IntVar(示例中的boxVars)的引用.

原因如下:

-Chckbuttons需要调用config(state = DISABLED / NORMAL).

-IntVars需要确定每个Checkbutton的值.

除了那些关键元素,它基本上只是一些2D数组处理.

这是我的示例代码(现在基于您提供的代码).

from Tkinter import *

master = Tk()

master.title("Select Groups")

rows=10

columns=10

boxes = []

boxVars = []

# Create all IntVars, set to 0

for i in range(rows):

boxVars.append([])

for j in range(columns):

boxVars[i].append(IntVar())

boxVars[i][j].set(0)

def checkRow(i):

global boxVars, boxes

row = boxVars[i]

deselected = []

# Loop through row that was changed, check which items were not selected

# (so that we know which indeces to disable in the event that 2 have been selected)

for j in range(len(row)):

if row[j].get() == 0:

deselected.append(j)

# Check if enough buttons have been selected. If so, disable the deselected indeces,

# Otherwise set all of them to active (in case we have previously disabled them).

if len(deselected) == (len(row) - 2):

for j in deselected:

boxes[i][j].config(state = DISABLED)

else:

for item in boxes[i]:

item.config(state = NORMAL)

def getSelected():

selected = {}

for i in range(len(boxVars)):

temp = []

for j in range(len(boxVars[i])):

if boxVars[i][j].get() == 1:

temp.append(j + 1)

if len(temp) > 1:

selected[i + 1] = temp

print selected

for x in range(rows):

boxes.append([])

for y in range(columns):

Label(master, text= "Group %s"%(y+1)).grid(row=0,column=y+1)

Label(master, text= "Test %s"%(x+1)).grid(row=x+1,column=0)

boxes[x].append(Checkbutton(master, variable = boxVars[x][y], command = lambda x = x: checkRow(x)))

boxes[x][y].grid(row=x+1, column=y+1)

b = Button(master, text = "Get", command = getSelected, width = 10)

b.grid(row = 12, column = 11)

mainloop()

标签:python,checkbox,grid,tkinter

来源: https://codeday.me/bug/20190609/1203992.html

python tkinter 勾选框_Python Tkinter网格复选框相关推荐

  1. PyQt5 技巧篇-复选框绑定行内容,全选、清空、展示选中的内容功能实现演示,设置复选框选中,检查复选框选中状态

    先看效果图,选中了几行,然后将选中的内容展示出来. 我设置两个有序序列,分别存储对应的复选框和行内容. 我的行内容是用的 label 标签. # 存储右边label组件的有序列表def get_L_b ...

  2. 复选框全选效果,根据单个复选框的选择情况确定全选复选框是否被选

    复选框全选与全不选效果 逻辑:复选框的checked属性与复选框全选效果对应起来,全选复选框checked:true 时,全部复选框checked:true: 全选框checked:false 时,全 ...

  3. java得到选择的复选框_java怎么获取复选框的值_java学习记录20200817

    2020.08.17-2020.08.23学习计划: (1)完成前端知识积累HTML+CSS+JavaScript(周一至周四) (2)完成ssm两门课复习(周一至周五) (3)完成所有已学代码的熟悉 ...

  4. html下拉复选框联动,HTML : CheckBox 复选框成组联动(JavaScript)

    在页面中,经常需要控制一组 CheckBox 的选中状态,常用的操作有: 1.通过一个或者多个复选框来控制一组 CheckBox 的选中状态. 2.根据一组 CheckBox 的选中状态来决定某些控件 ...

  5. 5、Web 窗体的基本控件——复选框控件和复选组控件(CheckBox 和 CheckBoxList)

    5.Web 窗体的基本控件--复选框控件和复选组控件(CheckBox 和 CheckBoxList) 复选框控件和复选组控件(CheckBox 和 CheckBoxList) 前端 <%@ P ...

  6. python输出文本框_python TKinter获取文本框内容的方法

    python TKinter获取文本框内容的方法 如下所示: #coding:utf-8 import urllib,urllib2 import Tkinter #导入TKinter模块 ytm=T ...

  7. python tkinter pack 同一行_用python tkinter中的一行连接2个复选按钮

    我有一个程序在画布中放置复选按钮,当选项(另一个复选按钮)被选中时.我有另一个选项(另一个复选按钮)来画线.为了画线,首先我应该选择checkbutton"draw a line" ...

  8. python炫酷动画源代码_Python tkinter实现的图片移动碰撞动画效果【附源码下载】...

    本文实例讲述了Python tkinter实现的图片移动碰撞动画效果.分享给大家供大家参考,具体如下: 先来看看运行效果: 具体代码如下: #!/usr/bin/python # -*- coding ...

  9. python中stringvar的用法_Python tkinter.StringVar方法代码示例

    本文整理汇总了Python中tkinter.StringVar方法的典型用法代码示例.如果您正苦于以下问题:Python tkinter.StringVar方法的具体用法?Python tkinter ...

最新文章

  1. AD管理之三,企业根CA的安装
  2. python开发的软件有哪些-有哪些值得推荐的 Python 开发工具?
  3. 零基础Python学习路线图,小白的进阶之路!
  4. 八大排序算法图文讲解
  5. 听一听蚂蚁金服机器学习算法中台周俊谈共享智能技术实践:如何降低数据共享的难度?
  6. 邮宝打印面单尺寸调整_如何打印身份证的实际尺寸?怎样用照片打印身份证复印件...
  7. 工业级光纤收发器产品性能特点介绍
  8. 浅谈飞鸽传书实现原理
  9. 认识计算机网络教案小学,初识计算机网络教案
  10. PostgreSQL 10.1 手册_部分 III. 服务器管理_第 26 章 高可用、负载均衡和复制_26.4. 日志传送的替代方法...
  11. c语言求英文字母编号,菜鸟求助,写一个随机输出26个英文字母的程序
  12. TeaVM当前版本(0.7.0)还不支持传递字串参数
  13. 计算机释放内存的命令,如何设置电脑Win7自动释放内存空间?
  14. 三星S7edge刷极光ROM的总结
  15. 我java启蒙老师 郝斌老师
  16. 网络编辑员国家职业标准
  17. axure rp8 添加动态面板_AxureRP教程–动态面板高级应用
  18. (转载)QTableWidget详细用法总结(非常详细,基本所有常用函数都涉及了)
  19. 七年级计算机考试知识点,七年级语文重点笔记 必考知识
  20. 微生信在线绘制KEGG Pathway通路分类汇总图

热门文章

  1. C语言学习教程:变量与常量数据分享
  2. PHP 实现微信支付 “请求单次分账”
  3. 递归和迭代在图遍历中的对比-栈结构
  4. 大数据只是听起来唬人?其实啥也不是。
  5. 问题事件名称: BEX
  6. Macbook 解决跨域的问题
  7. 服务器阵列管理工具之perccli和storccli
  8. linux到指定目录,linux移动文件到指定目录操作方法
  9. struts2框架完成用户登录的案例
  10. 快速分辨订单号生成工具