import tkinter
#数据内容
nameList=["name" ,"phone","email","homeAdess","class","love","sex","object","score"]
valueList=[1,2,3,4,5,6,7,8,9]
nL = iter(nameList)
vL=iter(valueList)
#主程序
root = tkinter.Tk()
rows=3#设置元素占用的行数
columns=6#设置每行元素占用的列数
for r in range(rows):
for c in range(columns):
cell= tkinter.Text(root, width=10, height=2)
cell.grid(row=r, column=c)
#设置字段名
if c % 2 == 0:
cell.insert("end", nL.__next__())
cell.configure(state='disabled', bg="Gainsboro")
#设置字段值
else:
cell.insert("end", vL.__next__())
root.mainloop()
实现修改属性的效果是通过locals()方法,把元素名和元素身加入了locals()列表中。这样就能通过locals()[name]的方法来调用了。不单是文本框, 把代码稍微改一下,批量创建的按钮、标签等元素都能进行修改。如此一来,少了很多代码量,又能做到属性修改的效果,这样就能实现一些高级功能。
代码展示:
import tkinter
class biao():
def __init__(self,maxr,maxc):
'''
:param maxr: 设置总行数
:param maxc: 每行的字段数量,
'''
self.maxr=maxr
self.maxc=2*maxc
self.textList=locals()#自动生成的变量名合集
def autoCreat_Text(self,farhter,nameList=None,valuelist=None):
'''
:param farhter: 父组件名称
:param nameList: 表格的字段名
:param valuelist: 字段名的值
:return:
'''
nL = iter(nameList)
vL=iter(valuelist)
for r in range(self.maxr):
for c in range(self.maxc):
index = str(r) + str(c)
name="text"+index#设置表格编号如text00,text01
self.textList[name]=tkinter.Text(farhter, width=10, height=2)
self.textList[name].grid(row=r, column=c)
if c % 2 == 0:
#设置字段名
index = str(r) + str(c)
name = "text" + index#设置文本框编号如text00、text01
self.textList[name].insert("end", nL.__next__())
self.textList[name].configure(state='disabled', bg="Gainsboro")
else:
#设置字段值
self.textList[name].insert("end", vL.__next__())
使用方法:
#数据
nameList = ["name", "phone", "email", "homeAdess", "class", "love", "sex", "object", "score"]
valueList = [1, 2, 3, 4, 5, 6, 7, 8, 9]
#-------------------------------------------------------------------------------------------
root = tkinter.Tk()
#批量创建文本框
a = biao(3, 3)
a.autoCreat_Text(root, nameList, valueList)
#添加一个按钮演示效果
def changeText001():
a.textList["text01"].configure(state='disabled', bg="Gainsboro")
b=tkinter.Button(root,text="效果演示",command=changeText001)
b.grid()
#
root.mainloop()
效果演示:
1.运行
2.点击按钮后,禁用名为text01的文本框,并更改背景颜色。
如果喜欢本文本,欢迎收藏、转发、讨论、打赏。如果有小伙伴有更好的方法,欢迎评论留言,谢谢!