Python 如果未使用getter,则返回数值的元组

Python 如果未使用getter,则返回数值的元组,python,tuples,Python,Tuples,首先让我说,我找到了解决办法,但我不确定根本原因 我编写了一个简单的GPS标记器,它使用tkinter接受各种输入,可以选择通过pynmea2获取GPS坐标,然后将每个填充字段输出到CSV文件。然后,用户可以清除输入字段以转到下一点 昨天我在使用它时意识到,一个特定的字段经常以1递增,所以我有必要包括一个选项,让它自动递增。我用tk.Checkbutton来做这件事 内部和CSV文件中使用的字段名存储为元组,例如 fields = 'gs_rated_input_voltage', ... 'g

首先让我说,我找到了解决办法,但我不确定根本原因

我编写了一个简单的GPS标记器,它使用tkinter接受各种输入,可以选择通过pynmea2获取GPS坐标,然后将每个填充字段输出到CSV文件。然后,用户可以清除输入字段以转到下一点

昨天我在使用它时意识到,一个特定的字段经常以1递增,所以我有必要包括一个选项,让它自动递增。我用tk.Checkbutton来做这件事

内部和CSV文件中使用的字段名存储为元组,例如

fields = 'gs_rated_input_voltage', ... 'gs_equipment_location'
命令保存当前输入后,for循环将遍历所有填充的文本框,并从该函数中返回它们。条目作为列表存储在函数中,由于返回类型没有声明为任何不同,因此我假设元组内容存储在列表中

当命令清除输入时,如果特定字段已填充且复选框已选中,则存储并切片该值:

text = entry[1].get()
mod_text = str(text)
last_int = int(mod_text[-1:])
mod_text = mod_text[:-1] + str(last_int + 1)
entry[1].delete(0, tk.END)
entry[1].insert(0, mod_text)
条目包含数字、字母和连字符,但最后一个字符是可靠的数字-这是可行的,但如果有人有更好的方法,我会洗耳恭听

综上所述,我发现如果我没有在第一行包含.get(),每次文本都会设置为.58366352.58366416,而不管输入了什么-数字、字母、混合等等


有人能解释一下我在这里遗漏了什么吗?

假设
entry
是一个
tkinter.entry
小部件的列表,思考一下当您执行以下操作时您在做什么:

text = entry[1]
mod_text = str(text)
因此,
entry[1]
是一个小部件。在对象上调用
str()
时,请求其字符串表示形式。没有任何东西可以保证你能在这里得到条目的内容

相反,您得到的是小部件的路径。路径基本上是小部件位于tkinter框架内的描述。它是小部件主控结构中所有名称的组合,由一个点分隔

因此,值
.58366352.58366416
意味着小部件本身的名称是
58366416
,并且它存在于另一个小部件中,名称为
58366352
,其根(没有名称)为其父


但是,为了从条目小部件中获取实际文本,您必须调用。

假设
entry
是一个
tkinter.entry
小部件的列表,请思考您在执行以下操作时正在做什么:

text = entry[1]
mod_text = str(text)
因此,
entry[1]
是一个小部件。在对象上调用
str()
时,请求其字符串表示形式。没有任何东西可以保证你能在这里得到条目的内容

相反,您得到的是小部件的路径。路径基本上是小部件位于tkinter框架内的描述。它是小部件主控结构中所有名称的组合,由一个点分隔

因此,值
.58366352.58366416
意味着小部件本身的名称是
58366416
,并且它存在于另一个小部件中,名称为
58366352
,其根(没有名称)为其父


但是为了从条目小部件中获取实际文本,您必须调用。

不知道为什么我最初没有看到它;由于条目[0]是标签,我被条目[1]所包围,因为条目[0]是小部件中包含的文本;因为条目[0]是标签,所以我被包含在小部件中的文本条目[1]所包围。