如何使可点击的按钮运行子程序? Python 3.X.X

Posted

技术标签:

【中文标题】如何使可点击的按钮运行子程序? Python 3.X.X【英文标题】:How do I make a clickable button run a subprugram? Python 3.X.X 【发布时间】:2022-01-13 19:02:38 【问题描述】:

大家好,我的 python 代码遇到了一点小挫折,我使用 tkinter 导入为一个运行良好的项目创建了一个 GUI,但是当我为按钮编写代码以运行子程序时,它会通知我语法错误我不知道如何解决,如果有人能帮助我非常感激,错误会出现在“def coinCount”中的“def”上。我在下面附上了我的 GUI 菜单代码。提前致谢

#Create Menubar in Python GUI Application  
import tkinter as tk  
from tkinter import ttk  
from tkinter import Menu  
win = tk.Tk()  
win.title("Coin Counter 3000")  
#Exit action  
def _quit():  
   win.quit()  
   win.destroy()  
   exit()  
#Create Menu Bar  
menuBar=Menu(win)  
win.config(menu=menuBar)  
#File Menu  

fileMenu= Menu(menuBar, tearoff=0)  
fileMenu.add_command(label="New")

fileMenu.add_separator()
fileMenu.add_command(label="1: Add to coincount-", command=lambda: def countCoint():  
fileMenu.add_separator()

fileMenu.add_command(label="2: View all records-", command=lambda: 
fileMenu.add_separator()

fileMenu.add_command(label="3: Accuracy of counters (volunteer accuracy report)-", command=lambda:def volunteerReport():
fileMenu.add_separator()

ileMenu.add_command(label="4: Display Totals-", command=lambda:def displayTotals():
fileMenu.add_separator()

sub_menu = Menu(fileMenu, tearoff=0)
sub_menu.add_command(label='Keyboard Shortcuts')
sub_menu.add_command(label='Color Themes')


fileMenu.add_separator()
fileMenu.add_command(label="4: Show total-", command=lambda:def runningTotals():  
fileMenu.add_separator()

fileMenu.add_command(label="Exit", command=_quit)  
menuBar.add_cascade(label="File", menu=fileMenu)  
#Help Menu  
helpMenu= Menu(menuBar, tearoff=0)  
helpMenu.add_command(label="About")
menuBar.add_cascade(label="Help", menu=helpMenu)  
#Calling Main()  
win.mainloop()  

【问题讨论】:

【参考方案1】:

一些问题。

首先,在将函数作为参数传递给add_command 之前,您必须定义函数(称为“子程序”)。

其次,您通过尝试用它定义命名函数来滥用lambdalambdas 用于创建小型匿名函数,因此def 关键字不是必需的,会导致语法错误。请参阅 Python 的 official documentation 和其他在线资源了解其用法。

第三,lambda 可能不是这里工作的最佳工具。相反,完全定义您计划使用的函数(coinCountrunningTotals 等)并将函数 names 作为参数传递。

def addToCoinCount():
    # Your code.

fileMenu.add_separator()
fileMenu.add_command(label="1: Add to coincount-", command=addToCoinCount
fileMenu.add_separator()

【讨论】:

嗯,好的,谢谢,老实说,我只是在学校学习 python,而且是新手,不知道我在做什么,我只是拿一些其他代码,然后尝试将它们拼凑. 要充分利用课堂,最好花时间查看您拥有的代码并了解您告诉计算机的内容。从一个小而易于管理的问题开始,直到你了解如何解决它,然后继续前进。将代码拼凑在一起可能会奏效,但很容易出错,而且创建起来绝对不是很有趣! 我尝试了你的改进方法,我已经克服了 def 的语法,但是出现了“fileMenu.add_separator()”的新语法,fileMenu.add_separator() fileMenu.add_command(label="1: Add to coincount-", command=countCoins fileMenu.add_separator() fileMenu.add_command(... 行缺少关闭)

以上是关于如何使可点击的按钮运行子程序? Python 3.X.X的主要内容,如果未能解决你的问题,请参考以下文章

如何使用主包的虚拟化文件系统/注册表使可选包中的应用程序运行?

使可点击的文本到另一个 UIViewController

无法使可执行文件可移植

VB如何模拟鼠标点击网页按钮?

Xcode 4.2 iOS程序如何给按钮等添加点击后的代码

delphi点击外部程序的按钮