How do I disable keyboard input into an Entry widget, disable resizing of tkinter window and hide the console window?

徘徊边缘 提交于 2021-02-10 16:21:10

问题


I am making a calculator using tkinter and I wish to do the following:

  • Disable keyboard input for the Entry widget so that the user can only input through the buttons.
  • Even after disabling keyboard input for the Entry widget, I wish to be able to change the background and foreground of the widget.
  • I wish to hide the console window because it is totally useless in the use of this calculator.
  • I don't want to let the user resize the root window. How do I disallow the resizing of the root window?

Here is my code so far...

from tkinter import *

root = Tk()
root.title("Calculator")
root.config(background="black")
operator = ""
textVar = StringVar()
def valInput(number):
    global operator
    operator+=str(number)
    textVar.set(operator)

display = Entry(root, textvariable=textVar, font=("Arial", 14, "bold"), bg="lightblue", fg="black", justify="right")
display.grid(row=0, column=0, columnspan=4)
btn7 = Button(root, font=("Arial", 12, "bold"), bg="orange", fg="red", text="7", command= lambda : valInput(7))
btn7.grid(row=1, column=0)

"""
And more buttons...

"""
root.mainloop()

As you can see, I can input into the Entry widget using buttons but later on, after the calculator is complete, if the user inputs characters like abcd... it will cause problems and show errors. How do I disallow keyboard entry so that I can avoid these errors?

I want to make my calculator a bit colorful. I changed the color of the root window, the buttons and also the color of the Entry widget. Is there any way to change the color of the widget even after it is disabled?

I don't need the console window while using this calculator. How do I hide it?

If I resize the root window, the calculator becomes ugly, besides, resizing the window isn't necessary. So how do I prevent the user from resizing the window?


回答1:


To be able to disable keyboard input in Entry(args)

Set the state to disabled:

display = Entry(root, state=DISABLED)

To be able to disable the feature of resizing the tkinter window (so that you can't drag and stretch it.

root.resizable(0,0)

To be able to make the command prompt window disappear. (I just want the tkinter window.

Rename the file with a .pyw extension (assuming you are using windows)




回答2:


Don't use from tkinter import * it's really not recommended because it pollutes the main namespace with every public name in the module. At best this makes code less explicit, at worst, it can (and it will) cause name collisions.

Have the right reflexes, use import tkinter or import tkinter as tk instead

this should work, you have to use the disabledbackground option :

import tkinter as tk

root = tk.Tk()

display = tk.Entry(root,font=('Arial', 20, 'bold'), disabledbackground='lightblue', state='disabled')
display.pack()

root.resizable(0,0)
root.mainloop()


来源:https://stackoverflow.com/questions/45175572/how-do-i-disable-keyboard-input-into-an-entry-widget-disable-resizing-of-tkinte

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!