如何在tkinter输入框中设置焦点

2024-06-30 12:59:51 发布

您现在位置:Python中文网/ 问答频道 /正文

已经花了一段时间寻找答案。我对Python不熟悉,但对一般的编码还不熟悉。发现各种版本相当具有挑战性!在

总之,我非常注重Gui,并设法让tkinter使用python3.5.1

只是玩基本的,有下面的代码,但不能设置第一个输入框的焦点。尝试过mEntry1.focus()和mEntry1.focus_set(),但get object始终没有属性错误。有什么帮助吗?在

from tkinter import *

def calc(*args):
  try:
      value1 = float(V1.get())
      value2 = float(V2.get())
      result.set(value1 * value2)
  except ValueError:
    pass
mGui = Tk()
mGui.geometry('450x450+200+200')
mGui.title('Test Gui')
V1 = StringVar()
V2 = StringVar()
result = StringVar()
mEntry1 = Entry(textvariable=V1,width=10).grid(row=0,column=0,sticky=W)
mEntry2 = Entry(textvariable=V2).grid(row=1,column=0)
mButton = Button(text='Calculate',command=calc).grid(row=3,column=0)
mlabel = Label(textvariable=result).grid(row=4,column=2)

Tags: gettkinterguicolumnresultgridv2row
1条回答
网友
1楼 · 发布于 2024-06-30 12:59:51

每个Tkinter小部件都有focus_set方法。在

代码的问题是.grid方法返回None。因此

mEntry1 = Entry(textvariable=V1,width=10).grid(row=0,column=0,sticky=W)

mEntry1设置为None,而不是小部件。因此,您需要通过两个步骤创建小部件并将其放入网格中:

^{pr2}$

当然,如果您实际上不需要对widget对象的引用,那么只需一步就可以了。所以有点像

Entry(textvariable=V1,width=10).grid(row=0,column=0,sticky=W)

会很好的。在


顺便说一句,使用from tkinter import *不是个好主意。它将130多个名称导入到您的命名空间中,这可能导致与您自己的名称或其他模块的名称(如果您还使用“star”import语句导入它们)发生名称冲突。这也使得代码更难阅读。相反,你可以做到

import tkinter as tk

然后使用tk.前缀引用Tkinter名称,例如tk.Entry而不是{}。在

相关问题 更多 >