英文:
How can i disable to keyboard attempts while using entrybox
问题
以下是您要的代码的翻译部分:
import tkinter as tk
from tkinter import *
root = tk.Tk()
text = ' '
root.state('zoomed')
root.resizable(False, False)
root.configure(bg='gray95')
entry_page = Entry(root, text='', width=28, font='Calibri 15', bg='dark gray')
canvas1 = Canvas(width=700, height=650, bg='dark gray')
canvas1.place(x=415, y=60)
def button_1():
entry_page.insert(len(str(entry_page)), 1)
def button_2():
entry_page.insert(len(str(entry_page)), 2)
def button_3():
entry_page.insert(len(str(entry_page)), 3)
def button_4():
entry_page.insert(len(str(entry_page)), 4)
def button_5():
entry_page.insert(len(str(entry_page)), 5)
def button_6():
entry_page.insert(len(str(entry_page)), 6)
def button_7():
entry_page.insert(len(str(entry_page)), 7)
def button_8():
entry_page.insert(len(str(entry_page)), 8)
def button_9():
entry_page.insert(len(str(entry_page)), 9)
def button_0():
entry_page.insert(len(str(entry_page)), 0)
def button_clear():
entry_page.delete(0, END)
def button_delete():
entry_page.delete(len(entry_page.get()) - 1, END)
def button_ok():
pass
button1 = tk.Button(root, text='1', width=10, height=5, command=button_1)
button2 = tk.Button(root, text='2', width=10, height=5, command=button_2)
button3 = tk.Button(root, text='3', width=10, height=5, command=button_3)
button4 = tk.Button(root, text='4', width=10, height=5, command=button_4)
button5 = tk.Button(root, text='5', width=10, height=5, command=button_5)
button6 = tk.Button(root, text='6', width=10, height=5, command=button_6)
button7 = tk.Button(root, text='7', width=10, height=5, command=button_7)
button8 = tk.Button(root, text='8', width=10, height=5, command=button_8)
button9 = tk.Button(root, text='9', width=10, height=5, command=button_9)
button0 = tk.Button(root, text='0', width=10, height=5, command=button_0)
button_clear = tk.Button(root, text='AC', width=10, height=5, command=button_clear)
button_delete = tk.Button(root, text='<-', width=10, height=5, command=button_delete)
button_ok = tk.Button(root, text='✓', width=39, height=2, command=button_ok)
def toggle_keyboard():
canvas1.place_forget()
entry_page.place(x=1200, y=100)
button_clear.place(x=1200, y=160)
button1.place(x=1300, y=160)
button2.place(x=1400, y=160)
button3.place(x=1200, y=260)
button4.place(x=1300, y=260)
button5.place(x=1400, y=260)
button6.place(x=1200, y=360)
button7.place(x=1300, y=360)
button8.place(x=1400, y=360)
button9.place(x=1200, y=460)
button0.place(x=1300, y=460)
button_delete.place(x=1400, y=460)
button_ok.place(x=1200, y=560)
toggle_keyboard()
root.mainloop()
希望这对您有所帮助。如果您有其他问题,请随时提出。
英文:
import tkinter as tk
from tkinter import *
root = tk.Tk()
yazı = ' '
root.state('zoomed')
root.resizable(False, False)
root.configure(bg='gray95')
labelsayfa = Entry(root, text='', width=28, font='Calibri 15', bg='dark gray')
c1 = Canvas(width=700, height=650, bg='dark gray')
c1.place(x=415, y=60)
def b1g():
labelsayfa.insert(len(str(labelsayfa)), 1)
def b2g():
labelsayfa.insert(len(str(labelsayfa)), 2)
def b3g():
labelsayfa.insert(len(str(labelsayfa)), 3)
def b4g():
labelsayfa.insert(len(str(labelsayfa)), 4)
def b5g():
labelsayfa.insert(len(str(labelsayfa)), 5)
def b6g():
labelsayfa.insert(len(str(labelsayfa)), 6)
def b7g():
labelsayfa.insert(len(str(labelsayfa)), 7)
def b8g():
labelsayfa.insert(len(str(labelsayfa)), 8)
def b9g():
labelsayfa.insert(len(str(labelsayfa)), 9)
def b0g():
labelsayfa.insert(len(str(labelsayfa)), 10)
def bacg():
labelsayfa.delete(0, END)
def bsilg():
labelsayfa.delete(len(labelsayfa.get()) - 1, END)
def bokg():
pass
b1 = tk.Button(root, text='1', width=10, height=5, command=b1g)
b2 = tk.Button(root, text='2', width=10, height=5, command=b2g)
b3 = tk.Button(root, text='3', width=10, height=5, command=b3g)
b4 = tk.Button(root, text='4', width=10, height=5, command=b4g)
b5 = tk.Button(root, text='5', width=10, height=5, command=b5g)
b6 = tk.Button(root, text='6', width=10, height=5, command=b6g)
b7 = tk.Button(root, text='7', width=10, height=5, command=b7g)
b8 = tk.Button(root, text='8', width=10, height=5, command=b8g)
b9 = tk.Button(root, text='9', width=10, height=5, command=b9g)
b0 = tk.Button(root, text='0', width=10, height=5, command=b0g)
bac = tk.Button(root, text='AC', width=10, height=5, command=bacg)
bsil = tk.Button(root, text='<--', width=10, height=5, command=bsilg)
bok = tk.Button(root, text='✓', width=39, height=2, command=bokg)
def tag():
c1.place_forget()
labelsayfa.place(x=1200, y=100)
bac.place(x=1200, y=160)
b1.place(x=1300, y=160)
b2.place(x=1400, y=160)
b3.place(x=1200, y=260)
b4.place(x=1300, y=260)
b5.place(x=1400, y=260)
b6.place(x=1200, y=360)
b7.place(x=1300, y=360)
b8.place(x=1400, y=360)
b9.place(x=1200, y=460)
b0.place(x=1300, y=460)
bsil.place(x=1400, y=460)
bok.place(x=1200, y=560)
tag()
root.mainloop()
I want to use textbox without keyboard only with buttons but i dont know how can i to do.How can i prevent the keyboard please help me i have searched all of the solitions but i couldnt find.Sorry about dots......................................................................................................
答案1
得分: 1
你可以通过将输入小部件的state
参数设置为DISABLED
来关闭输入小键盘。
labelsayfa = Entry(root, text='', width=28, font='Calibri 15', bg='dark gray', state=DISABLED)
然而,这将导致你的按钮也无法工作,所以你可以在按钮函数内部,临时启用输入小部件的状态,执行按钮操作,然后在退出函数之前将状态恢复为DISABLED
。
def b1g():
labelsayfa.configure(state=NORMAL)
labelsayfa.insert(len(str(labelsayfa)), 1)
labelsayfa.configure(state=DISABLED)
或者,为了避免在每个函数中重复相同的两行代码,你可以创建一个函数包装器,但这只会将重复的行数从2减少到1,所以这更多地取决于个人喜好。
例如:
def toggle_state(func):
def wrapper():
labelsayfa.configure(state=NORMAL)
func()
labelsayfa.configure(state=DISABLED)
return wrapper
@toggle_state
def b1g():
labelsayfa.insert(len(str(labelsayfa)), 1)
@toggle_state
def b2g():
labelsayfa.insert(len(str(labelsayfa)), 2)
# 其他按钮函数也可以使用@toggle_state装饰器
这段代码创建了一个函数包装器toggle_state
,用于暂时启用和禁用输入小部件的状态,以便执行按钮操作。然后,每个按钮函数使用@toggle_state
装饰器来包装,以实现相同的效果。
英文:
You can turn off keyboard input on an entry widget by setting it's state
parameter to DISABLED
.
labelsayfa = Entry(root, text='', width=28, font='Calibri 15', bg='dark gray', state=DISABLED)
This will make your buttons not work as well though, so what you can do is inside your button functions, temporarily enable the entry widgets state, perform the buttons actions and then return the state back to DISABLED
before exiting the function.
def b1g():
labelsayfa.configure(state=NORMAL)
labelsayfa.insert(len(str(labelsayfa)), 1)
labelsayfa.configure(state=DISABLED)
Or to avoid repeating the same two lines in every function you can create a function wrapper also, but this would only reduce the repeated lines from 2 to 1, so it really is more of a personal preference.
For example:
root = tk.Tk()
yazı = ' '
root.state('zoomed')
root.resizable(False, False)
root.configure(bg='gray95')
labelsayfa = Entry(root, text='', width=28, font='Calibri 15', bg='dark gray', state=DISABLED)
c1 = Canvas(width=700, height=650, bg='dark gray')
c1.place(x=415, y=60)
def toggle_state(func):
def wrapper():
labelsayfa.configure(state=NORMAL)
func()
labelsayfa.configure(state=DISABLED)
return wrapper
@toggle_state
def b1g():
labelsayfa.insert(len(str(labelsayfa)), 1)
@toggle_state
def b2g():
labelsayfa.insert(len(str(labelsayfa)), 2)
@toggle_state
def b3g():
labelsayfa.insert(len(str(labelsayfa)), 3)
@toggle_state
def b4g():
labelsayfa.insert(len(str(labelsayfa)), 4)
@toggle_state
def b5g():
labelsayfa.insert(len(str(labelsayfa)), 5)
@toggle_state
def b6g():
labelsayfa.insert(len(str(labelsayfa)), 6)
@toggle_state
def b7g():
labelsayfa.insert(len(str(labelsayfa)), 7)
@toggle_state
def b8g():
labelsayfa.insert(len(str(labelsayfa)), 8)
@toggle_state
def b9g():
labelsayfa.insert(len(str(labelsayfa)), 9)
@toggle_state
def b0g():
labelsayfa.insert(len(str(labelsayfa)), 10)
@toggle_state
def bacg():
labelsayfa.delete(0, END)
@toggle_state
def bsilg():
labelsayfa.delete(len(labelsayfa.get()) - 1, END)
@toggle_state
def bokg():
pass
b1 = tk.Button(root, text='1', width=10, height=5, command=b1g)
b2 = tk.Button(root, text='2', width=10, height=5, command=b2g)
b3 = tk.Button(root, text='3', width=10, height=5, command=b3g)
b4 = tk.Button(root, text='4', width=10, height=5, command=b4g)
b5 = tk.Button(root, text='5', width=10, height=5, command=b5g)
b6 = tk.Button(root, text='6', width=10, height=5, command=b6g)
b7 = tk.Button(root, text='7', width=10, height=5, command=b7g)
b8 = tk.Button(root, text='8', width=10, height=5, command=b8g)
b9 = tk.Button(root, text='9', width=10, height=5, command=b9g)
b0 = tk.Button(root, text='0', width=10, height=5, command=b0g)
bac = tk.Button(root, text='AC', width=10, height=5, command=bacg)
bsil = tk.Button(root, text='<--', width=10, height=5, command=bsilg)
bok = tk.Button(root, text='✓', width=39, height=2, command=bokg)
def tag():
c1.place_forget()
labelsayfa.place(x=1200, y=100)
bac.place(x=1200, y=160)
b1.place(x=1300, y=160)
b2.place(x=1400, y=160)
b3.place(x=1200, y=260)
b4.place(x=1300, y=260)
b5.place(x=1400, y=260)
b6.place(x=1200, y=360)
b7.place(x=1300, y=360)
b8.place(x=1400, y=360)
b9.place(x=1200, y=460)
b0.place(x=1300, y=460)
bsil.place(x=1400, y=460)
bok.place(x=1200, y=560)
tag()
root.mainloop()
答案2
得分: 0
只添加 " state='readonly' ":
Entry(root, text='', state='readonly')
英文:
As far as I understood the question, just add " state='readonly' "
Entry(root, text='', state='readonly')
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论