2017-07-18 53 views
1

我使用Tkinter的制作计算器和我要做到以下几点:如何禁用输入窗口小部件的键盘输入,禁用tkinter窗口的大小调整并隐藏控制台窗口?

  • 禁用键盘输入的Entry小部件,以便用户只能通过按键输入。
  • 即使在禁用Entry小部件的键盘输入之后,我希望能够更改小部件的背景和前景。
  • 我想隐藏控制台窗口,因为它在使用这个计算器时完全没用。
  • 我不想让用户调整root窗口的大小。我如何禁止调整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() 

正如你看到的,我可以输入到Entry部件使用按钮,但后来,计算器完成后,如果用户输入字符如abcd ...它会导致问题并显示错误。我如何禁止键盘输入,以便我可以避免这些错误?

我想让我的计算器有点多彩。我更改了root窗口的颜色,按钮以及Entry窗口小部件的颜色。即使在禁用之后,是否有任何方法可以更改小部件的颜色?

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

如果我调整root窗口的大小,计算器会变得很难看,此外,调整窗口大小并不是必需的。那么如何防止用户调整窗口大小呢?

+0

你懒得Google的这件事?你所要求的一切都在谷歌搜索结果的第一页,每个问题放在谷歌搜索... –

+0

@SierraMountainTech我很抱歉,但谷歌是一个搜索引擎,只是提供了我正在寻找的信息。它不_ **解释代码。我是一名学习者。不是专业人士。因此,对于我学到的所有东西,我需要一个解释,以便我可以用我的知识在以后再制作一个项目。 –

+0

通过阅读文档,然后创建代码来了解它的功能。我也不是专业人士。在我的空闲时间里,我一直这样做了大约4个月的时间,并且全部都是“读取,写入,运行和修复” –

回答

3

为了能够禁用输入键盘输入(参数)

设置状态来禁用:

display = Entry(root, state=DISABLED) 

为了能够禁用调整大小的Tkinter的特征窗口(这样你都无法将它舒展。

root.resizable(0,0) 

为了能够使命令提示符窗口消失。 (我只是想Tkinter的窗口。

重命名与.pyw扩展名的文件(假设你使用的是Windows)

+0

我觉得你要找的调整大小的问题是'root.resizable(width = False,height = False)'不'root.resizable(0,0)' –

+0

@SierraMountainTech你的方法更明确,否则这就是完全一样的东西。 – Novel

+0

我还没有看到你使用它的方式。在这种情况下,我会想象0 == False。正确? –

1

不要使用from tkinter import *它真的不推荐,因为它污染了主命名空间的每公开姓名的模块中。在最好的情况,这使得代码那么明显,在最坏的情况,它可以(而且会)事业名称冲突。

有合适的反射,使用import tkinterimport tkinter as tk代替

这应该工作,你必须使用disabledbackground选项:

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

是的。有效。有什么方法可以帮助你吗?不知怎的,也许会增加你的声望? Idk我是一个friggin noob。 –

+0

我是一个新手也不用担心,如果它帮助你解决问题,你可以升级anwser并将它标记为已接受(绿色的东西)。 顺便说一句,我不知道关于disabledbackground选项,所以你也帮助我,谢谢! –