首页 > 解决方案 > 为什么两个具有相同'text ='值的输入框被视为同一个输入框?

问题描述

我问过一个关于文本被插入到两个输入框中的问题,而它应该只插入一个输入框中。问题的代码行原来是这些:

MoneyAvailableTextBox = Entry(temp, font=('arial', 14, 'bold'), bg='White', fg = 'Black', bd = 5, width = 10, borderwidth = 4,  justify = CENTER, text = '£')
MoneyAvailableTextBox.grid(row = 1, column = 0, pady = 10)

HeistAwardTextBox = Entry(temp, font=('arial', 14, 'bold'), bg='White', fg = 'Black', bd = 5, width = 10, borderwidth = 4,  justify = CENTER, text = '£')
HeistAwardTextBox.grid(row = 3, column = 0, pady = 10)

我的一个朋友最终弄清楚了问题所在,我回答了我自己的问题,以防其他人遇到这个问题。问题是两个输入框都有text = '£'. 我的朋友只是将其中一个更改为具有价值$,问题就解决了。删除它们也会停止问题。他和我都不确定为什么必须输入相同的输入框text = '£'会使它们被视为相同的输入框。

我已经在下面复制了这个问题。我已经简化了代码。

import tkinter as tk
from tkinter import*

trialGUI = Tk()
trialGUI.title('Text Boxes')

#This is the text which will be inserted
value1 = 'Hello'
value2 = 'Bye'

#This inserts the text into the entry boxes
def updateStats():
    entryBox1.delete('0', END)
    #This should insert Hello in the first box
    entryBox1.insert(tk.INSERT, value1)
    entryBox2.delete('0', END)
    #This should insert Bye in the second box
    entryBox2.insert(tk.INSERT, value2)

# These are the text boxes
entryBox1 = Entry(trialGUI, text = '£')
entryBox1.grid(row = 0)
entryBox2 = Entry(trialGUI, text = '£')
entryBox2.grid(row = 1)

#Button which when pressed inserts texting into the entry boxes
Button1 = Button(trialGUI, command = updateStats, text = 'Insert Text')
Button1.grid(row = 2)

trialGUI.mainloop()

怎么说呢,这个问题已经解决了。我只是在寻找一个解释为什么首先会出现问题。

标签: pythonvariablestkintertkinter-entry

解决方案


texttextvariable选项与小部件的选项相同Entry。由于您将字符串传递"£"给它而不是 的实例,因此将创建StringVar一个实例,并将字符串作为其名称隐含地为您创建。StringVar所以两个Entry小部件都使用相同的StringVar. 因此,更改其中一个也会更改另一个,因为它们共享相同StringVar


推荐阅读