当用户选择Tkinter Entry小部件中的一部分文本时,它将突出显示.但是,当用户点击小部件时,突出显示消失.
尽管Entry小部件没有焦点,有没有办法保持所选文本突出显示?
我正在尝试创建一个不基于Tkinter菜单小部件的自定义右键单击菜单(它基于Tkinter Toplevel小部件),我希望尽管菜单具有焦点,但文本仍保持突出显示.
def CreateGUI():
WinCreate=Toplevel(master)
WinCreate.attributes("-toolwindow",1)
WinCreate.resizable(0,0)
WinCreate.transient(master)
WinCreate.grab_set()
sideframe=Frame(WinCreate,bd=2,relief=GROOVE)
Label(WinCreate,text=" logbook ",fg="White",bg="#3b5998",font=("RoyalBavarian",20)).pack(side=TOP,fill=X)
Label(sideframe,text="Name: ",fg="Black",font=("Tahoma",12)).grid(row=0,column=0,sticky=E)
Label(sideframe,text="Age: ",fg="Black",font=("Tahoma",12)).grid(row=1,column=0,sticky=E)
Label(sideframe,text="Gender: ",fg="Black",font=("Tahoma",12)).grid(row=2,column=0,sticky=E)
Label(sideframe,text="Eye Color: ",fg="Black",font=("Tahoma",12)).grid(row=3,column=0,sticky=E)
txtName=Entry(sideframe)
txtAge=Entry(sideframe)
txtEye=Entry(sideframe)
txtName.grid(row=0,column=1)
txtAge.grid(row=1,column=1)
var=StringVar(sideframe)
var.set("Male")
optGender=OptionMenu(sideframe,var,"Male","Female")
optGender.grid(row=2,column=1)
txtEye.grid(row=3,column=1)
sideframe.pack(side=LEFT,pady=7,padx=7,ipady=3,ipadx=3)
rightside=Frame(WinCreate,height=116,width=283)
irighttop=Frame(rightside,bd=2,relief=GROOVE)
irightbottom=Frame(rightside,bd=2,width=274,height=50,relief=GROOVE)
Label(irighttop,text="Username: ",fg="Black",font=("Tahoma",12)).grid(row=0,column=0,sticky=E)
Label(irighttop,text="Password: ",fg="Black",font=("Tahoma",12)).grid(row=1,column=0,sticky=E)
Label(irighttop,text="Confirm Password: ",fg="Black",font=("Tahoma",12)).grid(row=2,column=0,sticky=E)
txtUsername=Entry(irighttop)
txtPassword=Entry(irighttop)
txtConPass=Entry(irighttop)
txtUsername.grid(row=0,column=1)
txtPassword.grid(row=1,column=1)
txtConPass.grid(row=2,column=1)
irighttop.pack(side=TOP,ipady=3,ipadx=3)
btnCreateFinal=Button(irightbottom,text="Create",fg="Black",command=Create(txtName,txtAge,txtEye,var,txtPassword,txtConPass,txtUsername))
btnCancel=Button(irightbottom,text="Cancel",fg="Black")
btnCreateFinal.pack(side=LEFT)
btnCancel.pack(side=RIGHT)
irightbottom.pack_propagate(0)
irightbottom.pack(side=BOTTOM,ipady=3,ipadx=3)
rightside.pack_propagate(0)
rightside.pack(side=RIGHT)
def Create(txtName,txtAge,txtEye,var,txtPassword,txtConPass,txtUsername):
choice='1'
password="blank"
conpassword="blank2"
#----------------------
name=txtName.get()
age=txtAge.get()
gender=var.get()
eye=txtEye.get()
password=txtPassword.get()
conpassword=txtConPass.get()
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果输入框位于另一个函数中,如何从输入框中获取数据?所有输入框都在 CreateGUI() 函数中。我想将变量 txtName 等传递给 Create() 函数。这个方法正确吗?
如何检查Tkinter输入框是否为空?
换句话说,如果它没有分配给它的值.
我正在制作一个 GUI 界面,以使我的脚本可供普通用户使用。我的问题是 - 我有一个条目小部件,当用户使用浏览按钮选择文件时,它将“文件路径”作为值。问题是条目小部件显示文件路径的开头(左端),但我更希望看到文件路径的右端。
这是我的脚本。
from Tkinter import *
from tkFileDialog import askopenfilename
app = Tk()
app.title("ABC")
app.geometry("300x100")
def browse_for_file(entry_name, filetype):
File_path = askopenfilename(filetypes = filetype)
entry_name.delete(0, END)
entry_name.insert(0, File_path)
templ_filename = StringVar()
templ_entry = Entry(app, textvariable = templ_filename, width = 30)
templ_entry.grid(row = 3, column = 1, sticky=W)
filetype_fasta = [('fasta files', '*.fasta'), ('All files', '*.*')]
button_templ = Button(app, text = 'Browse', width =6, command = lambda:browse_for_file(templ_entry, filetype_fasta))
button_templ.grid(row = 3, column = 2)
app.mainloop()
Run Code Online (Sandbox Code Playgroud) 我试图在按下向上或向下箭头键时增加或减少条目值。为此,我需要首先找到焦点所在的条目,我正在尝试这样做“ .focus_get() ”。问题是我不知道它是如何工作的或者它返回了什么。它为每个条目返回 1 个唯一编号,例如:“.45191744”,但每次运行该程序时该编号都会更改。以下数字是运行代码时的最后 5 次尝试。".50518728" ".53009096" ".55889592" ".51891896"
如何获取焦点条目的变量名称?
这是我的代码:
def get_focus1(event):
print("return: event.widget is", event.widget)
print("focus is:", window2.focus_get())
print(window2.focus_get())
print(help(window2.Entry))
window2 = Tk()
eyear1 = Entry(window2, width=4, font=("Helvetica", 16)) # Entry for year
eyear1.insert(10, defaultYear)
eyear1.grid(row=1, column=1)
emonth1 = Entry(window2, width=4, font=("Helvetica", 16)) # Entry for Month
emonth1.insert(10, defaultMonth)
emonth1.grid(row=1, column=2)
eday1 = Entry(window2, width=4, font=("Helvetica", 16)) # Entry for day
eday1.insert(10, defaultDay)
eday1.grid(row=1, column=3)
window2.bind('<Left>', get_focus1)
mainloop()
Run Code Online (Sandbox Code Playgroud) 我想用多个 tkinter Entry 小部件制作一个程序。我使用 for 循环来制作多个 Entry 小部件。但是我怎样才能从中获得价值呢?
我的测试代码:
from tkinter import *
root=Tk()
variables = []
entries = []
for i in range(10):
va = StringVar()
en = Entry(root, textvariable=va)
en.grid(row=i+1, column=0)
variables.append(va)
entries.append(en)
def hallo():
print(en.get())
button=Button(root,text="krijg",command=hallo).grid(row=12,column=0)
root.mainloop()
Run Code Online (Sandbox Code Playgroud) 如何在tkinter Entry小部件中插入临时文本?
例如,我有一个Label User,旁边有一个Entry小部件,它应该"Enter your username..."在应用程序的开头有一些文本,并且在将游标放在Entry小部件上时,它应该删除"Enter your username..."并允许用户输入数据.
这是我目前的代码:
import tkinter as tk
root = tk.Tk()
label = tk.Label(root, text="User:")
label.pack()
entry = tk.Entry(root, bd=1, show="Enter your user name...")
entry.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我没有找到任何选项或方法来删除将游标放在Entry小部件上的数据.
我正在尝试制作一个弹出窗口,人们可以在其中填写输入框中的字符串。我已经经历了很多例子,但它不起作用。
我正在尝试这样做:
var_entry = simpledialog.askstring("Test", "Test")
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息:
_tkinter.TclError: window ".!_querystring" was deleted before its visibility changed
Run Code Online (Sandbox Code Playgroud)
提前致谢!
编辑:发布错误的错误消息
我想创建一个密码和用户名输入字段。底部有一个“提交”按钮。这是我到目前为止所得到的,但我不知道如何使用网格:
这是将创建 1 个输入字段的代码,名称为“用户名”
from Tkinter import *
top = Tk()
L1 = Label(top, text="User Name")
L1.pack( side = LEFT)
E1 = Entry(top, bd =5)
E1.pack(side = RIGHT)
top.mainloop()
Run Code Online (Sandbox Code Playgroud)
这是我的提交按钮代码:
MyButton1 = Button(master, text="Submit", width=10, command=callback)
MyButton1.grid(row=0, column=0)
Run Code Online (Sandbox Code Playgroud)
我只是不知道如何将这两个代码放在一起。
我正在开发一个具有条目小部件的程序。当用户单击按钮并且该条目小部件为空时,程序会将其边框颜色更改为红色。但是当我尝试时,边框保持相同的颜色,即黑色。
这是代码:
self.timeField = Entry(self.mfr, width=40, relief=SOLID, highlightbackground="red", highlightcolor="red")
self.timeField.grid(row=0, column=1, sticky=W)
Run Code Online (Sandbox Code Playgroud)
然后在检查它是否为空的 if 语句中将其更改为红色,但它似乎不起作用:
self.timeField.config(highlightbackground="red")
self.timeField.config(highlightcolor="red")
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释为什么这不起作用、我做错了什么以及解决它的方法吗?提前致谢。
更新:这是按照要求的其余代码:
def start(self):
waitTime = self.timeField.get()
password = self.passField.get()
cTime = str(self.tVers.get())
self.cTime = cTime
if waitTime.strip() != "":
if password.strip() != "":
if waitTime.isdigit():
if self.cTime == "Secs":
waitTime = int(waitTime)
elif self.timeVer == "Mins":
waitTime = int(waitTime) * 60
else:
waitTime = int(waitTime) * 3600
self.password = password
root.withdraw()
time.sleep(float(waitTime))
root.deiconify()
root.overrideredirect(True)
root.geometry("{0}x{1}+0+0".format(root.winfo_screenwidth(), root.winfo_screenheight()))
self.tfr.destroy()
self.mfr.destroy()
self.bfr.destroy()
self.create_lockScreen()
else:
self.timeField.configure(highlightcolor="red") …Run Code Online (Sandbox Code Playgroud) tkinter ×10
tkinter-entry ×10
python ×9
python-3.x ×3
python-2.7 ×2
widget ×2
alignment ×1
border ×1
button ×1
focus ×1
get ×1
simpledialog ×1
string ×1