【问题标题】:Python: Starting function on button pressPython:按下按钮时启动功能
【发布时间】:2015-11-13 02:05:49
【问题描述】:

我正在为我的兄弟制作一个简单的程序,当他按下鼠标上的第四个按钮时,它会播放他想要的叮当声。 我有 PyAudio 并使用了一个简单的函数来播放叮当声。 我只需要知道如何设置在按下按钮时启动的功能。
我的第一个想法是有一个 When 循环,当按下按钮时,它会更改 var 以适应并在循环结束时,但我也不知道如何在按下按钮时更改 var。

提前感谢您的帮助。

【问题讨论】:

  • 你用的是什么 gui 管理器?你的意思是“while”循环而不是“when”循环,对吧?
  • 我只是用 CMD 运行它并在 Notepad++ 中制作它。是的,我的意思是,很抱歉。
  • @en_Knight 从上下文来看,我相信 Jack 的意思是“何时”,而不是“循环”。作为一名老师,我看到学生说循环意味着块。所以请阅读“When block”(或事件处理程序)。

标签: python function button


【解决方案1】:

使用 python 制作简单的 GUI 很容易。如果你喜欢外在的礼仪,Pygame 很受欢迎。 Tkinter 内置在 python 中,非常好用

Effbot 是它不可或缺的资源;这是他们的按钮页面。

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

SO 上的某个人(实际上,不少人)也对此感到疑惑

How to pass arguments to a Button command in Tkinter?

要点是(python 2)

# import the GUI manager package
import Tkinter as tk
# make a window pop up
my_root_window = tk.Tk()
# add a button to it
button = tk.Button( my_root_window, text='Press Me!', command=foo)
# make the button appear
button.pack()
# keep the gui alive
my_root_window.mainloop()

我可以举个例子。如 SO 链接中所述,唯一微妙的是您传递函数对象,即在分配函数时不要调用该函数。

请注意,在搜索您的问题时,查询“python button command”会弹出我链接的页面以及超过一百万个其他页面;红鲱鱼是你正在谈论的音频内容与从按钮调用函数的一般问题无关

我还应该注意,while 循环不是正确的方法,因为它会导致几乎所有 GUI 冻结。最后调用的函数“mainloop”使窗口保持打开状态,并允许在窗口中发生事件,如按钮按下。只需使按下按钮时调用的函数设置正确的连锁反应。如果您需要更多控制,请查看更多小部件!

绑定到鼠标按钮也很容易

my_root_window.bind('<Button-1>',lambda event : foobar)

只要按下鼠标左键就会调用 foobar。这个enter link description here 页面详细介绍了可能发生的事件,尤其是鼠标事件

【讨论】:

    【解决方案2】:
    import Tkinter
    import tkMessageBox
    
    top = Tkinter.Tk()
    
    def helloCallBack():
       tkMessageBox.showinfo( "Hello Python", "Hello World")
    
    B = Tkinter.Button(top, text ="Hello", command = helloCallBack)
    
    B.pack()
    top.mainloop()
    

    【讨论】:

    • 这个问题回答了 OP 的问题。
    • 欢迎来到 Stack Overflow!虽然这段代码可以解决问题,including an explanation 解决问题的方式和原因确实有助于提高帖子的质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的答案以添加解释并说明适用的限制和假设。 From Review
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-14
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 2018-04-30
    相关资源
    最近更新 更多