GUI编程(tkinter)限制Text文本框输入

测试代码如下:

import tkinter as tk
win=tk.Tk()
win.geometry('600x400')
win.title('test')
tk.Label(win, text='日志', bd=3, relief='groove', width=30).grid(row=10, column=0, columnspan=50,pady=10)
print_log = tk.Text(win, width=80, height=22, bd=3)
print_log.grid(row=11, column=0,rowspan=5,columnspan=50,padx=5)
bar = tk.Scrollbar(win, orient=tk.VERTICAL)
bar.grid(row=11, column=80, rowspan=12, sticky='N' + 'S')  # N,S,W,E 表示 上,下,左,右
bar.config(command=print_log.yview)  # 指定回调函数是Scrollbar的yview
print_log.config(yscrollcommand=bar.set)  # 指定与滚动条的回调函数
print_log.bind('<KeyRelease>', self.limit_print)  # 任意键盘按键松开
print_log.bind('<ButtonRelease-1>', self.limit_print_2)  #鼠标左键松开
'''--------------限制日志框输入内容--------------'''
#任意按键松开时光标所在行移动到最后一行,且不可输入
def limit_print(num):
    i=self.print_log.get('end-1c linestart')  #获取最后一行开头
    #print('test',i)
    print_log.mark_set('insert', 'end-1c linestart')  #移动光标到最后一行
    #限制字母、数字、中文字符与特殊符号
    if str(i).isalnum()==True  or str(i).isalnum()==False or ('\u4e00' <= str(i) <= '\u9fa5')==True and i!='':
       print_log.delete('end-1c linestart','end-1c lineend')
#鼠标左键松开时光标移动到最后一行
def limit_print_2(num):
    print_log.mark_set('insert', 'end-1c linestart')   #移动光标到最后一行    
win.mainloop()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值