Python 如何禁用输入控件的键盘输入、禁用tkinter窗口的大小调整以及隐藏控制台窗口?

Python 如何禁用输入控件的键盘输入、禁用tkinter窗口的大小调整以及隐藏控制台窗口?,python,user-interface,tkinter,Python,User Interface,Tkinter,我正在使用tkinter制作一个计算器,我希望执行以下操作: 禁用条目小部件的键盘输入,以便用户只能通过按钮输入 即使在禁用条目小部件的键盘输入后,我也希望能够更改小部件的背景和前景 我想隐藏控制台窗口,因为它在使用这个计算器时是完全无用的 我不想让用户调整root窗口的大小。如何禁止调整根目录的大小 这是我到目前为止的代码 from tkinter import * root = Tk() root.title("Calculator") root.config(background="

我正在使用tkinter制作一个计算器,我希望执行以下操作:

  • 禁用
    条目
    小部件的键盘输入,以便用户只能通过按钮输入
  • 即使在禁用
    条目
    小部件的键盘输入后,我也希望能够更改小部件的背景和前景
  • 我想隐藏控制台窗口,因为它在使用这个计算器时是完全无用的
  • 我不想让用户调整
    root
    窗口的大小。如何禁止调整
    根目录的大小
这是我到目前为止的代码

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()
如您所见,我可以使用按钮输入
条目
小部件,但稍后,在计算器完成后,如果用户输入像abcd这样的字符。。。它将导致问题并显示错误。如何禁止键盘输入以避免这些错误

我想让我的计算器色彩鲜艳一点。我更改了
窗口的颜色、按钮以及
条目
小部件的颜色。是否有任何方法可以在小部件被禁用后更改其颜色

使用此计算器时,我不需要控制台窗口。我该如何隐藏它

如果我调整
root
窗口的大小,计算器将变得丑陋,此外,不需要调整窗口的大小。那么如何防止用户调整窗口的大小呢

能够在条目(args)中禁用键盘输入

将状态设置为禁用:

display = Entry(root, state=DISABLED)
能够禁用调整tkinter窗口大小的功能(以便您无法拖动和拉伸它)

使命令提示符窗口消失。(我只需要tkinter窗口。)

重命名扩展名为.pyw的文件(假设您使用的是windows)

能够在条目(args)中禁用键盘输入

将状态设置为禁用:

display = Entry(root, state=DISABLED)
能够禁用调整tkinter窗口大小的功能(以便您无法拖动和拉伸它)

使命令提示符窗口消失。(我只需要tkinter窗口。)


使用.pyw扩展名重命名文件(假设您使用的是windows)

不要使用tkinter import*
中的
,因为它会污染模块中每个公用名称的主命名空间。这最多会使代码不太明确,最坏的情况是,它可能(而且会)导致名称冲突

有正确的反应,使用
import tkinter
import tkinter as tk

这应该是可行的,您必须使用
禁用背景
选项:

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()

不要使用tkinter import*
中的
,不建议使用它,因为它会污染模块中每个公共名称的主命名空间。最好的情况下,这会使代码不那么明确,最坏的情况下,它会(而且会)导致名称冲突

有正确的反应,使用
import tkinter
import tkinter as tk

这应该是可行的,您必须使用
禁用背景
选项:

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()


我想你想要的是
root.resizable(width=False,height=False)
不是
root.resizable(0,0)
@SierraMountainTech您的方法更显式,但在其他方面,这是完全相同的。我没有看到您使用它的方式。在这种情况下,我会想象0==False。正确吗?0始终等于False(在python和大多数语言中)。它们实际上是相同的。请尝试
0==False
isinstance(False,int)
在REPL中。@Sierramauntaintech或解析tkinter中的当前值。尝试
r.resizable()
查看当前值。我认为您在寻找调整大小的问题时,需要的是
root.resizable(width=False,height=False)
不是
root.resizable(0,0)
@SierraMountainTech您的方法更显式,但在其他方面,这是完全相同的。我没有看到您使用它的方式。在这种情况下,我会想象0==False。正确吗?0始终等于False(在python和大多数语言中)。它们实际上是相同的。请尝试
0==False
isinstance(False,int)
在REPL中。@SierraMountainTech或解析tkinter中的当前值。请尝试
r.resizable()
查看当前值。你有没有用谷歌搜索过这些内容?你要求的所有内容都在谷歌搜索结果的第一页上,每个问题都放在谷歌搜索中…@SierraMountainTech对不起,谷歌是一个搜索引擎,只提供我要找的信息。它没有解释代码。我是一个学习者,不是一个p专业。所以对于我学到的每一件事,我都需要一个解释,以便我以后可以利用我的知识进行另一个项目。你可以通过阅读文档然后创建代码来了解它的作用。我也不是专业人士。我在空闲时间做这件事已经有大约4个月了,而且都是“读、写、运行、修复”假设您在windows上运行,如果您将文件扩展名从
.py
更改为
.pyw
,则命令窗口将不再显示。@scotty3785感谢。您是否费心用谷歌搜索过这些内容?您要求的所有内容都在谷歌搜索结果的第一页,每个问题都放在谷歌搜索中…@SierraMountainTe很抱歉,谷歌是一个搜索引擎,它只提供我要找的信息。它不解释代码。我是一个学习者,不是专业人士。所以对于我学到的每一件事,我都需要一个解释,以便我以后可以用我的知识做另一个项目。你可以通过阅读文档,然后创建代码来了解什么是的。我也不是专业人士。我在空闲时间做这件事已经有四个月了,而且都是“读、写、运行、修复”的