I surfed the internet for a long time but all of which I tried did not work.
Here is on of which I tried:
Here is what I want to happen: I want to restrict the user to using only ABCDEFGHIJKLMNOPQRSTUVWXYZ. And they should only be able to use 3 characters.
I tried textvariable and validate but the validate thing was too confusing and I didn't know how to implement this using textvariable.
Here is on of which I tried:
#! /usr/bin/env python # -*- coding: utf-8 -*- # # GUI module generated by PAGE version 4.14 # In conjunction with Tcl version 8.6 # Jun 15, 2018 02:37:37 PM import sys try: from Tkinter import * except ImportError: from tkinter import * try: import ttk py3 = False except ImportError: import tkinter.ttk as ttk py3 = True import unknown_support def vp_start_gui(): '''Starting point when module is the main routine.''' global val, w, root root = Tk() top = Converter (root) unknown_support.init(root, top) root.mainloop() w = None def create_Converter(root, *args, **kwargs): '''Starting point when module is imported by another program.''' global w, w_win, rt rt = root w = Toplevel (root) top = Converter (w) unknown_support.init(w, top, *args, **kwargs) return (w, top) def destroy_Converter(): global w w.destroy() w = None class Converter: def SubmitCurrency1(self, event): global CurrencyTaken1 CurrencyTaken1 = Entry.get(self.Entry1) #self.Entry1.delete(0, 'end') print(CurrencyTaken1) def SubmitCurrency2(self, event): global CurrencyTaken2 CurrencyTaken2 = Entry.get(self.Entry1_1) #self.Entry1_1.delete(0, 'end') print(CurrencyTaken2) def ConvertCurrency(self, event): print(CurrencyTaken1 , CurrencyTaken2) def callback(self, Entry1Variable): self.var.set(self.var.get().upper()) self.Entry1Variable.set(self.Entry1Variable.get()[:4]) def callback2(self, Entry2Variable): self.var.set(self.var.get().upper()) self.Entry2Variable.set(self.Entry2Variable.get()[:4]) def validate(self, *args): if not self.vars.get().isalpha(): corrected = ''.join(filter(str.isalpha, self.vars.get())) self.vars.set(corrected) def __init__(self, top=None): '''This class configures and populates the toplevel window. top is the toplevel containing window.''' _bgcolor = '#d9d9d9' # X11 color: 'gray85' _fgcolor = '#000000' # X11 color: 'black' _compcolor = '#d9d9d9' # X11 color: 'gray85' _ana1color = '#d9d9d9' # X11 color: 'gray85' _ana2color = '#d9d9d9' # X11 color: 'gray85' top.geometry("228x101+504+157") top.title("Converter") top.configure(background="#d9d9d9") self.Entry1Variable = StringVar() self.Entry1Variable.trace("w", lambda name, index, mode, Entry1Variable=self.Entry1Variable: self.callback(self.Entry1Variable)) self.Entry2Variable = StringVar() self.Entry2Variable.trace("w", lambda name, index, mode, Entry2Variable=self.Entry2Variable: self.callback2(self.Entry2Variable)) self.var = StringVar() self.vars = StringVar() self.Entry1 = Entry(top, textvariable = self.Entry1Variable) self.Entry1.place(relx=0.04, rely=0.1,height=20, relwidth=0.19) self.Entry1.configure(background="white") self.Entry1.configure(disabledforeground="#a3a3a3") self.Entry1.configure(font="TkFixedFont") self.Entry1.configure(foreground="#000000") self.Entry1.configure(insertbackground="black") self.Entry1.configure(width=44) self.vars.trace('w', self.validate) self.Entry1_1 = Entry(top, textvariable = self.Entry2Variable) self.Entry1_1.place(relx=0.04, rely=0.4,height=20, relwidth=0.19) self.Entry1_1.configure(background="white") self.Entry1_1.configure(disabledforeground="#a3a3a3") self.Entry1_1.configure(font="TkFixedFont") self.Entry1_1.configure(foreground="#000000") self.Entry1_1.configure(highlightbackground="#d9d9d9") self.Entry1_1.configure(highlightcolor="black") self.Entry1_1.configure(insertbackground="black") self.Entry1_1.configure(selectbackground="#c4c4c4") self.Entry1_1.configure(selectforeground="black") self.Button1 = Button(top) self.Button1.place(relx=0.26, rely=0.09, height=24, width=49) self.Button1.configure(activebackground="#d9d9d9") self.Button1.configure(activeforeground="#000000") self.Button1.configure(background="#d9d9d9") self.Button1.configure(disabledforeground="#a3a3a3") self.Button1.configure(foreground="#000000") self.Button1.configure(highlightbackground="#d9d9d9") self.Button1.configure(highlightcolor="black") self.Button1.configure(pady="0") self.Button1.configure(text='''Submit''') self.Button1.bind("<Button-1>", self.SubmitCurrency1) self.Button1_2 = Button(top) self.Button1_2.place(relx=0.26, rely=0.38, height=24, width=49) self.Button1_2.configure(activebackground="#d9d9d9") self.Button1_2.configure(activeforeground="#000000") self.Button1_2.configure(background="#d9d9d9") self.Button1_2.configure(disabledforeground="#a3a3a3") self.Button1_2.configure(foreground="#000000") self.Button1_2.configure(highlightbackground="#d9d9d9") self.Button1_2.configure(highlightcolor="black") self.Button1_2.configure(pady="0") self.Button1_2.configure(text='''Submit''') self.Button1_2.bind("<Button-1>", self.SubmitCurrency2) self.Label1 = Label(top) self.Label1.place(relx=0.53, rely=0.1, height=21, width=28) self.Label1.configure(background="#d9d9d9") self.Label1.configure(disabledforeground="#a3a3a3") self.Label1.configure(foreground="#000000") self.Label1.configure(text='''USD''') self.Label1_3 = Label(top) self.Label1_3.place(relx=0.53, rely=0.4, height=21, width=28) self.Label1_3.configure(activebackground="#f9f9f9") self.Label1_3.configure(activeforeground="black") self.Label1_3.configure(background="#d9d9d9") self.Label1_3.configure(disabledforeground="#a3a3a3") self.Label1_3.configure(foreground="#000000") self.Label1_3.configure(highlightbackground="#d9d9d9") self.Label1_3.configure(highlightcolor="black") self.Label1_3.configure(text='''USD''') self.Button2 = Button(top) self.Button2.place(relx=0.7, rely=0.08, height=54, width=57) self.Button2.configure(activebackground="#d9d9d9") self.Button2.configure(activeforeground="#000000") self.Button2.configure(background="#d9d9d9") self.Button2.configure(disabledforeground="#a3a3a3") self.Button2.configure(foreground="#000000") self.Button2.configure(highlightbackground="#d9d9d9") self.Button2.configure(highlightcolor="black") self.Button2.configure(pady="0") self.Button2.configure(text='''Convert''') self.Button2.configure(width=57) self.Button2.bind("<Button-1>", self.ConvertCurrency) self.Label2 = Label(top) self.Label2.place(relx=0.04, rely=0.69, height=26, width=50) self.Label2.configure(background="#d9d9d9") self.Label2.configure(disabledforeground="#a3a3a3") self.Label2.configure(foreground="#000000") self.Label2.configure(text='''Amount''') self.Label2.configure(width=50) self.Entry2 = Entry(top) self.Entry2.place(relx=0.31, rely=0.69,height=20, relwidth=0.63) self.Entry2.configure(background="white") self.Entry2.configure(disabledforeground="#a3a3a3") self.Entry2.configure(font="TkFixedFont") self.Entry2.configure(foreground="#000000") self.Entry2.configure(insertbackground="black") self.Entry2.configure(width=144) def Sum(event): print("LOL") if __name__ == '__main__': vp_start_gui()Notice the "self.vars.trace('w', self.validate)", this is what is not working. It is supposed to make it so that I am not able to type numbers into the Entry but it won't work.
Here is what I want to happen: I want to restrict the user to using only ABCDEFGHIJKLMNOPQRSTUVWXYZ. And they should only be able to use 3 characters.
I tried textvariable and validate but the validate thing was too confusing and I didn't know how to implement this using textvariable.