资深Bug工程师 2021-12-29 21:37 采纳率: 55.6%
浏览 38
已结题

python tkinter button分别输入的问题

用tkinter button创建了6个数字键盘用来输入,如何实现用这6个button给左边的三个entry输入框输入数字?要求给其中一个输入框的时候其他两个输入框不输入。

img

import tkinter as tk
from tkinter import ttk


win = tk.Tk()
win.title('配方计算系统')
win.geometry('600x350+400+200')
x = tk.Label(win, text='请输入增减量:')
x.grid(row=0, column=0)
xx = tk.Entry(win).grid(row=0, column=1, columnspan=5)
zz = tk.Entry(win).grid(row=1, column=1, columnspan=5)
cc = tk.Entry(win).grid(row=2, column=1, columnspan=5)
aj1 = tk.Button(win, text='1',  width=3, height=2, font=1)
aj1.grid(row=3, column=7, ipadx=5)
aj2 = tk.Button(win, text='2', width=3, height=2, font=1)
aj2.grid(row=3, column=8, ipadx=5)
aj3 = tk.Button(win, text='3', width=3, height=2, font=1)
aj3.grid(row=3, column=9, ipadx=5)
aj4 = tk.Button(win, text='4', width=3, height=2, font=1)
aj4.grid(row=4, column=7, ipadx=5)
aj5 = tk.Button(win, text='5', width=3, height=2, font=1)
aj5.grid(row=4, column=8, ipadx=5)
aj6 = tk.Button(win, text='6', width=3, height=2, font=1)
aj6.grid(row=4, column=9, ipadx=5)
win.mainloop()
  • 写回答

1条回答 默认 最新

  • soar3033 2021-12-29 22:57
    关注

    弄好了 ,请采纳,不懂问我

    
    import tkinter as tk
    from tkinter import ttk
    
    f=0
     
    win = tk.Tk()
    win.title('配方计算系统')
    win.geometry('600x350+400+200')
    x = tk.Label(win, text='请输入增减量:')
    x.grid(row=0, column=0)
    
    def focus1(event):
        global f
        f=1
    def focus2(event):
        global f
        f=2
    def focus3(event):
        global f
        f=3
    xx = tk.Entry(win)
    xx.bind('<FocusIn>', focus1)
    xx.grid(row=0, column=1, columnspan=5)
    zz = tk.Entry(win)
    zz.bind('<FocusIn>', focus2)
    zz.grid(row=1, column=1, columnspan=5)
    cc = tk.Entry(win)
    cc.bind('<FocusIn>', focus3)
    cc.grid(row=2, column=1, columnspan=5)
    print(f)
    def but(n):
        n=str(n)
        global f
        if f==1:
            print(1)
            t=len(xx.get())
            xx.insert(t , n)
        if f==2:
            print(2)
            t=len(zz.get())
            zz.insert(t,n)
        if f==3:
            print(3)
            t=len(cc.get())
            cc.insert(t,n)
            
    aj1 = tk.Button(win, text='1',  width=3, height=2, font=1,command=lambda:but(1))
    aj1.grid(row=3, column=7, ipadx=5)
    aj2 = tk.Button(win, text='2', width=3, height=2, font=1,command=lambda:but(2))
    aj2.grid(row=3, column=8, ipadx=5)
    aj3 = tk.Button(win, text='3', width=3, height=2, font=1,command=lambda:but(3))
    aj3.grid(row=3, column=9, ipadx=5)
    aj4 = tk.Button(win, text='4', width=3, height=2, font=1,command=lambda:but(4))
    aj4.grid(row=4, column=7, ipadx=5)
    aj5 = tk.Button(win, text='5', width=3, height=2, font=1,command=lambda:but(5))
    aj5.grid(row=4, column=8, ipadx=5)
    aj6 = tk.Button(win, text='6', width=3, height=2, font=1,command=lambda:but(6))
    aj6.grid(row=4, column=9, ipadx=5)
    win.mainloop()
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月6日
  • 已采纳回答 12月29日
  • 赞助了问题酬金 12月29日
  • 创建了问题 12月29日

悬赏问题

  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥30 BC260Y用MQTT向阿里云发布主题消息一直错误
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)