只允许用户在tkinter中的文本小部件末尾键入文本



我想写一个像Putty这样的程序,使用netmiko库和Text tkinter小部件作为编辑器连接到Cisco路由器。

我的问题是如何只允许用户在Text的末尾键入命令,而不允许在Text小部件的其他地方键入命令。

例如,我的程序连接,发送显示ip接口摘要,接收输出并在编辑器上显示

Router# show ip interface brief
Interface     IP-Address     OK?  Method  Status                  Protocol
Ethernet0     10.108.00.5    YES  NVRAM   up                      up      
Ethernet1     unassigned     YES  unset   administratively down   down    
Loopback0     10.108.200.5   YES  NVRAM   up                      up
Router# <-- user can only type command from here

程序看起来像这个

idlelib/PyShell.py中定义的IDLE的Shell或多或少可以满足您的需求。您可以自由阅读和复制,但代码相当复杂。我自己还没有完全阅读和理解它,也不会试图解释它

相反,您可以使用一个带有输入和输出的大型只读文本框,以及一个设置在主框正下方的小型输入框,例如3行。文本小部件有一个状态。根据该参考

"通常,文本窗口小部件会对键盘和鼠标事件做出响应;设置state=tk.NORMAL以获取此行为。如果您将state设置为tk.DISABLED,文本小部件不会响应,您也无法修改它以编程方式显示内容。"

在条目框中,绑定到移动条目的代码,并提交条目以执行操作。请注意,它必须将状态设置回NORMAL,插入条目,然后再次设置DISABLED。

最新更新