打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python 中使用 Tkinter、Tix 的一些常见问题的解决

1. 如何使得一个 Text 只读,因为设置 state="disabled" 之后,代码中也无法插入和修改文本。

 解决方案:

绑定键盘输入,取消所有的输入。

实现方式:

w = Tkinter.Text(master)

w.bind("<KeyPress>", lambda e : "break")

# 事件处理脚本返回 "break" 会中断后面的绑定,所以键盘输入不会被插入到文本框。

2. 如何删除 Tix.OptionMenu 中的子项目。

总是找不到如何得到 OptionMenu 的所有孩子的方法,Tix 官方文档提供的属性是 entries,但是实际上调用的时候却找不到(Tix8.4.3 for Win 32),下面是一种折衷的方法,需要命令的名称和标签有关联关系:

# 创建和使用

w = Tix.OptionMenu(master)

w.add_command("x", label="x")

w.add_command("y", label="y")

... 

# 删除子项

w["disablecallback"] = True
try:
    n = w.menu.index("end")
    for i in range(n + 1):
        name = w.menu.entrycget(i, "label")
        w.delete(name)
except Exception, inst:
    print inst

w["disablecallback"] = False

可以尝试直接调用 tk 的方法实现(下面的代码没有调试,只是说明思路):

names = w.tk.call(w, "entries")

for name in names.split():

    w.delete(name)

3. 为一个文本创建多个视图

首先创建一个原始 Text

w = Tkinter.Text(master)

然后创建一个 peer,因为Tkinter不支持 peer,所以需要直接调用 tk.call,并且把新创建的 peer 单独放到一个 frame 里面。

frame = Tkinter.Frame(master)

name = frame.winfo_parent() + "." frame._winfo_name() + ".1"

w.tk.call(w, "peer", "create", name)

w.tk.call("grid", name, "-sticky", ”nesw")

然后就可以使用 frame 作为一个 Tkinter 中的控件来使用了,其中就包含着 Text 的另外一个 peer 视图,在两个视图里面都可以修改文本,但是其插入的光标位置可以不一样。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Menu/Menu的Command)
100个Python实战项目(十三)使用 Tkinter GUI 库构建闹钟应用程序
Tkinter绘制股票K线图
【python】tkinter教程、35个tkinter示例代码和GUI图示
Tkinter教程之Frame篇
为Python程序添加图形化界面的教程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服