【发布时间】:2021-05-17 07:11:18
【问题描述】:
我无法默认选中我的单选按钮隐藏密码输入小部件(PasswordEntry)中输入的单词,我的代码如下,我尝试了很多方法但失败了,我不知道出了什么问题,通常是 if 语句本来可以工作的,我也尝试过,但最糟糕的是,小部件崩溃了。如何使 if 语句按预期工作?提前感谢您的帮助。
from tkinter import *
import tkinter.messagebox
from win32api import GetSystemMetrics
import tkinter.font as TkFont
from PIL import ImageTk,Image
import tkinter.font
from tkinter import ttk
from tkinter import Tk
PasswordAsker=Tk()
screen_x = int(PasswordAsker.winfo_screenwidth())
screen_y = int(PasswordAsker.winfo_screenheight())
window_x = 492
window_y = 150
posX = (screen_x // 2) - (window_x // 2)
posY = (screen_y // 2) - (window_y // 2)
geo = "{}x{}+{}+{}". format(window_x, window_y, posX, posY)
PasswordAsker.geometry(geo)
PasswordAsker.config(background="gray8")
PasswordAsker.resizable(0,0)
PasswordAsker.title("Enter the password")
PasswordAsker.config(relief="raised")
def kill():
PasswordAsker.destroy()
PasswordLabel = Label(PasswordAsker, text = 'Enter the password', font=('TkDefaultFont', 9, "bold"))
PasswordLabel.config(background="gray8")
PasswordLabel.config(foreground="red3")
PasswordEntry = Entry(PasswordAsker, textvariable = name_var,font=('TkDefaultFont',12,'normal'),width=30,borderwidth=5, relief="sunken", selectbackground="dark red")
PasswordEntry.config(highlightbackground="gray15")
PasswordEntry.config(foreground="red")
PasswordEntry.config(highlightthickness=3)
PasswordEntry.config(highlightcolor="dark red")
PasswordEntry.config(background="gray15")
OkButton=Button(PasswordAsker,text = 'Okay',command = mainwindow, font=('TkDefaultFont', 9, "bold"),borderwidth=5, relief="sunken", activebackground="dark red", bg="gray15",fg="red3")
CancelBtn=Button(PasswordAsker,text = 'Cancel',command = kill, font=('TkDefaultFont', 9, "bold"),borderwidth=5, relief="sunken", activebackground="dark red", bg="gray15",fg="red3")
visibilityOptn = LabelFrame(PasswordAsker, text="Password visibility", height=60, width=130)
PasswordLabel.place(x=5, y=18)
PasswordEntry.place(x=125, y=10)
OkButton.configure(height=1, width=6)
OkButton.place(x=422, y=12)
CancelBtn.configure(height=1, width=6)
CancelBtn.place(x=422, y=52)
visibilityOptn.configure(font=('TkDefaultFont', 8, "bold"), foreground="red3", background="gray8")
visibilityOptn.place(x=260, y=62)
i = StringVar()
w1 = Radiobutton (visibilityOptn,text="Hide",value=1, variable=i, bg="gray8", fg="red3", activebackground="dark red")
w2 = Radiobutton (visibilityOptn,text="Show",value=2, variable=i, bg="gray8", fg="red3", activebackground="dark red")
w1.pack(side="left")
w2.pack(side="right")
if (i.get() ==1):
PasswordEntry.config(show="•")
else:
PasswordEntry.config(show="")
i.set("1")
PasswordAsker.mainloop()
【问题讨论】:
-
您有什么具体原因不使用复选框吗?我可以给你一个解决方案,但如果你想要一个复选框,它会容易得多。
-
您在创建单选按钮后大约一毫秒调用
i.get(),并且您没有为单选按钮指定默认值。 -
@TheLizzard 我更喜欢单选按钮,请提供您的解决方案
-
@BryanOakley 请问我该怎么做? .set 不是已经给出默认值了吗?我在想我已经给了它但是晚了
-
@Shadow Kurgansk 您希望默认选项是什么?隐藏还是显示?
标签: python-3.x tkinter radio-button