python - 如何在 Tkinter 中设置 Entry 参数“显示”以始终在 Entry 字段中显示固定数量的星号?
问题描述
我将“显示”参数设置为“*”,这样“输入”字段就不会显示输入的内容。我遇到的问题是,它暗示了这个词的实际长度。因此,例如,如果我输入单词“blue”,它将显示为“****”,这暗示它是一个 4 个字符长的单词。此外,解决方案代码需要与填写上述字段的随机函数一起使用
我该如何解决这个简单的方法?
编辑:为了把事情放到一个上下文中,这是我制作的应用程序的代码。
import random
from tkinter import *
def num_guess():
try:
int(num_input.get())
except ValueError:
Ans = "You must enter a number in your number field!\n"
result_field.insert(INSERT, Ans)
if int(num_input.get()) == int(hidden_num):
Ans = "Congrats you guessed correctly!\n"
result_field.insert(INSERT, Ans)
secret_num.delete(0, END)
secret_num.insert(END, hidden_num)
elif int(num_input.get()) in range(int(hidden_num) - 2, int(hidden_num) + 3):
Ans = "You are very close to secret number!..." + str(num_input.get()) + "\n"
result_field.insert(INSERT, Ans)
elif int(num_input.get()) in range(int(hidden_num) - 5, int(hidden_num) + 6):
Ans = "You are close to secret number!..." + str(num_input.get()) + "\n"
result_field.insert(INSERT, Ans)
elif int(num_input.get()) in range(int(hidden_num) - 10, int(hidden_num) + 11):
Ans = "You are relatively close to secret number!..." + str(num_input.get()) + "\n"
result_field.insert(INSERT, Ans)
elif int(num_input.get()) in range(int(hidden_num) - 15, int(hidden_num) + 16):
Ans = "You are far from secret number!..." + str(num_input.get()) + "\n"
result_field.insert(INSERT, Ans)
else:
Ans = "You are very far from secret number!..." + str(num_input.get()) + "\n"
result_field.insert(INSERT, Ans)
def start_new():
global hidden_num
result_field.delete('1.0', END)
secret_num.delete(0, END)
secret_num.insert(END, random.randint(1,100))
hidden_num = secret_num.get()
secret_num.delete(0, END)
secret_num.insert(END, "***")
result_field.insert(INSERT, "Now enter your number as a guess!\n")
def hide_num():
global hidden_num
try:
int(secret_num.get())
hidden_num = secret_num.get()
secret_num.delete(0, END)
secret_num.insert(END, "***")
result_field.insert(INSERT, "Now enter your number as a guess!\n")
except ValueError:
Ans = "You must enter a number in secret number field!\n"
result_field.insert(INSERT, Ans)
hidden_num = 0
window = Tk()
window.title('Guess the Number!')
Label(window, text = "").grid(row=0)
Label(window, text = "Secret number:").grid(row=7, column=1, padx=8)
Label(window, text = "Enter your number:").grid(row=8, column=1, padx=8)
Label(window, text = "").grid(row=10)
#find textbox code!
result_field = Text(window, width=54, height=18)
result_field.grid(row=1, column=1, columnspan=6, rowspan=6, padx=8)
result_field.insert(INSERT, "Click 'Start new' to start a new game!\n")
sb1 = Scrollbar(window)
sb1.grid(row=1, column=7, rowspan=6, sticky = 'NS')
result_field.configure(yscrollcommand=sb1.set)
sb1.configure(command = result_field.yview)
secret_num = Entry(window, width=6)
secret_num.grid(row=7, column=2)
num_input = Entry(window, width=6)
num_input.grid(row=8, column=2)
b1 = Button(window, text = "Take a guess!", command=num_guess, width=12)
b1.grid(row=9, column=1, pady=8, padx=8)
b2 = Button(window, text = "Start new", command=start_new, width=12)
b2.grid(row=9, column=2, pady=8, padx=8)
b3 = Button(window, text = "Quit", command=window.destroy, width=12)
b3.grid(row=9, column=3, pady=8, padx=8)
b4 = Button(window, text = "Hide number", command=hide_num, width=12)
b4.grid(row=7, column=3, sticky = 'W')
window.mainloop()
解决方案
如何在 Tkinter 中设置 Entry 参数“显示”以始终在 Entry 字段中显示固定数量的星号?..我该如何解决这个简单的方法?
没有简单的方法,show
除了将 show 设置为空白之外,没有其他方法可以使用该属性来隐藏长度。
如果您需要更安全的东西,则必须创建自己的绑定来接受用户的输入,然后显示其他内容。
推荐阅读
- javascript - 尝试在 TypeScript 中进行单元测试
- algorithm - 算法:比萨切割
- javascript - 点击主页时如何点击p-breadcrumb
- java - 在java中将docx转换为pdf
- drupal-8 - 在 Drupal 8. Drupal 商务。如何根据产品字段隐藏视图(实体参考 - 分类)
- angular - querySelectorAll 的打字稿类型
- json - 如何在 Shell 脚本中使用正则
- javascript - 如何在悬停 a-frame 元素时使用其 ID 调用 javascript 函数?
- git - '\' 不是内部或外部命令、可运行程序或批处理文件。发出 git rev-list 时
- spotfire - 新的 SharePoint 列表列在 SpotFire 中不可见(SharePoint 连接器,不是 OData)