python - 像 tkinter python 中的 ms Word 这样的文本字段
问题描述
我编写了类似于 Word 的软件。我陷入了一个问题。如果我点击在我的假软件中写入,将返回一个文本字段。当我不在此文本字段中写入任何内容时,我想通过单击页面的另一部分来删除此文本字段。并创建一个新的文本字段。
from tkinter import *
root = Tk()
def do(event):
textBox=Text(root, cursor="arrow", fg=None, bd=0, height=1,
width=event.x)
textBox.delete
textBox.place(x=event.x, y=event.y)
root.config(bg = "red")
root.bind("<Button-1>",do)
root.mainloop()
解决方案
您可以这样做:
from tkinter import Tk, Text
def destroy_empty_widget(event=None):
if not event.widget.get('0.0', 'end-1c'):
event.widget.destroy()
def do(event):
text_box = Text(
root, cursor="arrow", fg=None, bd=0,
height=1, width=10)
text_box.focus_set()
text_box.bind('<FocusOut>', destroy_empty_widget)
text_box.place(x=event.x, y=event.y)
root = Tk()
root.config(bg="red")
root.bind("<Button-1>", do)
root.mainloop()
将键盘焦点设置为小部件并绑定该焦点将破坏它。
另外:
我强烈建议不要在导入某些东西时使用通配符(*
),你应该导入你需要的东西,例如from module import Class1, func_1, var_2
等等,或者导入整个模块:import module
然后你也可以使用别名:import module as md
或者类似的东西,关键是不要除非您真的知道自己在做什么,否则不要导入所有内容;名称冲突是问题所在。
我强烈建议遵循PEP 8 - Python 代码样式指南。函数名和变量名应在 中snake_case
,类名应在CapitalCase
. =
如果它用作关键字参数 ( func(arg='value')
) 的一部分,则周围没有空格,但如果=
它用于分配值 ( variable = 'some value'
),则周围有空格。在运算符周围留出空间(+-/
等value = x + y
:(此处除外value += x + y
))。在函数和类声明周围有两个空行。类方法周围有一个空行。
推荐阅读
- asp.net-mvc - MVC 发布原始正文
- split - 水平划分页面并显示新部分,而不会干扰页面内容。和内容从上到下自动排列内容
- java - 通过字节码将私有类从 Kotlin 转换为 Java
- java - 如何获取“JTextField 数组”的值并将其存储在 Array Integer 中?
- php - 如果我的文件处于自动加载状态,则找不到配置类
- c - 为什么 _mm512_store_pd 在这个矩阵乘法代码中超级慢?
- json - Angular:获取特定对象键数据json
- python - 如何将 .HEIC/.HEIF 图像读入(python)opencv 以进行后续处理?
- android - 在 KOTLIN 中将字符串转换为浮点数或整数
- flutter - 多个平台的文本字段警报对话框