python - 为什么两个具有相同'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()
怎么说呢,这个问题已经解决了。我只是在寻找一个解释为什么首先会出现问题。
解决方案
text
textvariable
选项与小部件的选项相同Entry
。由于您将字符串传递"£"
给它而不是 的实例,因此将创建StringVar
一个实例,并将字符串作为其名称隐含地为您创建。StringVar
所以两个Entry
小部件都使用相同的StringVar
. 因此,更改其中一个也会更改另一个,因为它们共享相同StringVar
。