在Python中检查按钮是否被按下?

2024-04-24 13:24:48 发布

您现在位置:Python中文网/ 问答频道 /正文

代码:

import sys
from tkinter import *

credit = 0
coins = 0
choice = 0


credit1 = 0
coins = 0
prices = [200,150,160,50,90]
item = 0
i = 0
temp=0
n=0
choice1 = 0
choice2 = 0

credit1 = 0
coins = 0
prices = [200,150,160,50,90]
item = 0
i = 0
temp=0
n=0
choice1 = 0
choice2 = 0

def insert():
    insert = Tk()

    insert.geometry("450x250")
    iLabel = Label(insert, text="Enter coins.[Press Buttons]").grid(row=1, column=1)

    tenbutton = Button(insert, text="10p").grid(row=2, column=1)
    twentybutton = Button(insert, text="20p").grid(row=3, column=1)
    fiftybutton = Button(insert, text="50p").grid(row=4, column=1)
    poundbutton = Button(insert, text="£1").grid(row=5, column=1)

我正在创建一个模拟自动售货机的程序。 我如何告诉Python“检查”是否按下了按钮? 在伪代码中是:

if tenbutton is pressed:
   Add 10p to credit

如果按下tenbutton,我将如何用Python编写?提前谢谢你。


Tags: 代码textimportcolumnbuttonitemtempgrid
3条回答
from tkinter import *
import tkinter
import tkinter.messagebox

root = Tk()


def fun(arg):
    if arg == 1:
        tkinter.messagebox.showinfo("button 1", "button 1 used")
    elif arg == 2:
        tkinter.messagebox.showinfo("button 2", "button 2 used")
    elif arg == 3:
        tkinter.messagebox.showinfo("button 3", "button 3 used")
    elif arg == 4:
        tkinter.messagebox.showinfo("button 4", "button 4 used")


b1 = Button(root, text="Quit1", command=lambda: fun(1))
b1.pack()
b2 = Button(root, text="Quit2", command=lambda: fun(2))
b2.pack()
b3 = Button(root, text="Quit3", command=lambda: fun(3))
b3.pack()
b4 = Button(root, text="Quit4", command=lambda: fun(4))
b4.pack()

root.mainloop()

您可以将command添加到Tkinter Button小部件中,该小部件将回调函数:

def tenbuttonCallback():
    global credit
    credit += 10

tenbutton = Button(insert, text="10p", command=tenbuttonCallback)
tenbutton.grid(row=2, column=1)

见:http://effbot.org/tkinterbook/button.htm

很简单,定义一个在按下按钮后调用的函数。就像这样:

def addCredit():
    global credit
    credit+=10

然后将此简单功能分配给按钮:

tenbutton = Button(insert, text="10p", command=addCredit).grid(row=2, column=1)

顺便说一句,您的代码要求在某个地方使用class。使用这么多globals通常是一种不好的做法。另一个问题是from tkinter import *,它破坏了可读性。我建议import tkinter as tk

相关问题 更多 >