代码之家  ›  专栏  ›  技术社区  ›  Programer Beginner

Python Tkinter输入板文本

  •  1
  • Programer Beginner  · 技术社区  · 8 年前

    我的进步:

    entry_widget.bind('<FocusIn>', lambda f: entry_widget.insert(0, ' '))
    

    这在用户单击小部件时添加了一个空白空间,但此解决方案存在多个问题:

    1. FocusOut 但这也会清除用户可能编写的所有文本。

    2. 用户可以删除插入的空格

    3. 当获取内容时,在开头有额外的空间。虽然这是一个小问题,可以通过删除内容的第一个字符来解决。

    可能还有更多的问题我没有解释。

    我认为我的代码的方向是不好的,因此我问是否有人知道如何'正确'垫入小部件?

    2 回复  |  直到 8 年前
        1
  •  3
  •   Kevin    8 年前

    我不知道如何调整条目的填充,但有一种方法可以得到类似的结果。给入口一个 FLAT 样式,并将项嵌入到用作项边框的框架中。然后可以通过调整条目的 borderwidth . 例子:

    import tkinter as tk
    
    root = tk.Tk()
    frame = tk.Frame(root, borderwidth=5, relief=tk.SUNKEN)
    frame.pack()
    entry = tk.Entry(frame, borderwidth=15, relief=tk.FLAT)
    entry.pack()
    root.mainloop()
    

    enter image description here

        2
  •  1
  •   giodamelio    7 年前

    使用tkinter 8.6U

    entry.config(padx = 15)
    
        3
  •  0
  •   Mike - SMT    8 年前

    下面是一个简单的例子,说明如何在用户键入内容时强制一个空格以开头,然后使用一个绑定来保留空格。

    import tkinter as tk
    
    root = tk.Tk()
    
    def check_for_space(event):
        if entry.get() == "":
            entry.insert(0, " ")
        elif entry.get()[0] != " ":
            entry.insert(0, " ")
        else:
            pass
    
    entry = tk.Entry(root)
    entry.insert(0, " ")
    entry.pack()
    entry.bind("<Key>", check_for_space)
    
    root.mainloop()
    
        4
  •  0
  •   G. Trialonis    6 年前

    我在程序中使用了padx=一个数字,得到了我想要的填充。在我的情况下,没有文本框。见下面第三行:

    text_B = Text(mdle2, width=48, borderwidth=5, height=10, wrap=WORD)
    text_B.grid(row=3, rowspan=4, column=0, columnspan=3, sticky=W, padx=85, pady=3)
    text_B.config(padx=10)