首页 > 编程问答 >使用 tkinter 为 python 创建 GUI 时如何解决语法错误?

使用 tkinter 为 python 创建 GUI 时如何解决语法错误?

时间:2024-07-23 05:20:49浏览次数:13  
标签:python function tkinter tkinter-button

我是一名 Python 初学者,决定使用 tkinter 制作一个小型 GUI,该 GUI 接受用户(潜在餐馆)的 3 个输入,然后单击按钮后随机输出其中一家餐馆。我不断收到语法错误,并认为它与我的 buttonfunc 或调用它的命令有关。此代码尚未包含在 GUI 上输出餐厅的任何位置。任何帮助将不胜感激

# Python Project Random Selector
import random
import tkinter as tk

root = tk.Tk()

def buttonfunc():
    all_rest = [entrystr1.get(), entrystr2.get(), entrystr3.get()]
    randomrest = random.choice(all_rest)
    print(randomrest)

root.geometry("800x500")
root.title("Random Choice GUI")

label = tk.Label(root, text="Enter 3 of your favourite restaurants and seperate them by a comma (,): ", font=('Arial',16))
label.pack(padx=20, pady=20)

entrystr1 = tk.StringVar(value = 'type the first restaurant name here')
choice1 = tk.Entry(root, textvariable = entrystr1)
choice1.pack()

entrystr2 = tk.StringVar(value = 'type the second restaurant name here')
choice2 = tk.Entry(root, textvariable = entrystr2)
choice2.pack()

entrystr3 = tk.StringVar(value = 'type the third restaurant name here')
choice3 = tk.Entry(root, textvariable = entrystr3)
choice3.pack()

enterbtn = tk.Button(root, text="Enter", command=lambda: buttonfunc, font=('Arial',14) )
enterbtn.pack()

root.mainloop()

我多次尝试更改我的buttonfunc中的变量,但是,这是行不通的。我还尝试将代码减少到只有一个输入框,以查看重复代码是否有问题。那也行不通。


的代码中存在一个小的语法错误,即 command 参数中 lambda 函数的使用。虽然打算让 lambda 调用 buttonfunc ,但并没有正确地执行。应该将 buttonfunc 作为函数传递给 command ,方法是添加括号,或者更简单地说,直接使用函数名称,而不需要 lambda

以下是更正后的代码:

# Python Project Random Selector
import random
import tkinter as tk

root = tk.Tk()

def buttonfunc():
    all_rest = [entrystr1.get(), entrystr2.get(), entrystr3.get()]
    randomrest = random.choice(all_rest)
    print(randomrest)

root.geometry("800x500")
root.title("Random Choice GUI")

label = tk.Label(root, text="Enter 3 of your favourite restaurants and seperate them by a comma (,): ", font=('Arial',16))
label.pack(padx=20, pady=20)

entrystr1 = tk.StringVar(value = 'type the first restaurant name here')
choice1 = tk.Entry(root, textvariable = entrystr1)
choice1.pack()

entrystr2 = tk.StringVar(value = 'type the second restaurant name here')
choice2 = tk.Entry(root, textvariable = entrystr2)
choice2.pack()

entrystr3 = tk.StringVar(value = 'type the third restaurant name here')
choice3 = tk.Entry(root, textvariable = entrystr3)
choice3.pack()

# 使用 buttonfunc 作为 command 参数,不需要 lambda
enterbtn = tk.Button(root, text="Enter", command=buttonfunc, font=('Arial',14) )
enterbtn.pack()

root.mainloop()

在这个更正后的代码中,我们将 command=buttonfunc 传递给按钮,而不是 command=lambda: buttonfunc 。这样就可以在点击按钮时正确地调用 buttonfunc 函数。

标签:python,function,tkinter,tkinter-button
From: 78780789

相关文章

  • 在 python 中打开 gnome 终端立即显示为僵尸
    作为背景,我正在编写一个脚本来训练多个pytorch模型。我有一个训练脚本,我希望能够在gnome终端中作为子进程运行。这样做的主要原因是我可以随时关注训练进度。如果我可能有多个GPU,我想在单独的窗口中多次运行我的训练脚本。为了实现这一点,我一直在使用popen。以下代码用于打......
  • python threading.Condition 的意外行为
    我正在尝试同步多个线程。我期望使用threading.Condition和threading.Barrier时的脚本输出大致相同,但事实并非如此。请解释一下为什么会发生这种情况。一般来说,我需要线程在一个无限循环中执行工作(一些IO操作),但是每个循环都是以主线程的权限开始的,而权限是仅在......
  • Python - 逆透视数据框
    我有一个按日期时间索引的表,每个日期时间都有多个层(中心和交货间隔):日期时间中心交货间隔结算点价格2024-01-0101:00:00休斯顿中心1......
  • 试图理解这个错误:致命的Python错误:PyEval_RestoreThread:该函数必须在持有GIL的情况下
    我有一个小型tkinter应用程序,我一直在其中实现最小的“拖放”,主要作为学习实验。我真正关心的是删除文件的文件路径。一切实际上都工作正常,直到我尝试在拖放后打包标签小部件。下面的最小工作示例。有问题的行会用注释指出。我通常不会在调试方面遇到太多麻烦,但我只是不知......
  • 如何使代码格式再次适用于 Python(Mac 上的 Visual Studio Code)?
    在Mac上,Option+Shift+F现在会显示“没有安装用于‘python’文件的格式化程序”。消息框:我尝试安装这个插件,但没有看到这种情况的变化:我已经为Python安装了这两个插件:但是正如@starball提到的,它可能已经减少了支持现在。......
  • 无法在 python 中安装 pip install expliot - bluepy 的 Building Wheel (pyproject.t
    在此处输入图像描述当我尝试在Windows计算机中通过cmd安装pipinstallexpliot包时,我收到2个错误名称×Buildingwheelforbluepy(pyproject.toml)didnotrunsuccessfully.│exitcode:1**AND**opt=self.warn_dash_deprecation......
  • python 用单斜杠-反斜杠替换url字符串中的双斜杠
    我的URL包含错误的双斜杠(“//”),我需要将其转换为单斜杠。不用说,我想保持“https:”后面的双斜杠不变。可以在字符串中进行此更改的最短Python代码是什么?我一直在尝试使用re.sub,带有冒号否定的正则表达式(即,[^:](//)),但它想要替换整个匹配项(包括前面......
  • 如何使用 Selenium Python 搜索 Excel 文件中的文本
    我有一些数据在Excel文件中。我想要转到Excel文件,然后搜索文本(取自网站表),然后获取该行的所有数据,这些数据将用于在浏览器中填充表格。示例:我希望selenium搜索ST0003然后获取名称,该学生ID的父亲姓名,以便我可以在大学网站中填写此信息。我想我会从网站......
  • Python 套接字请求在很多情况下都会失败
    我在python中尝试了超过5种不同的方法,尽管人们说它在其他论坛上有效,但所有这些方法都惨遭失败。importsocketmessage="test"clientsocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)clientsocket.connect(('1.1.1.1',80))clientsocket.send(mes......
  • Python 网络套接字
    我一直尝试通过Python访问该网站的websocket,但是需要绕过CloudFlare,现在我尝试通过cookie进行绕过,但是这不起作用。我已经尝试在没有cookie的情况下执行此操作,但这也不起作用。importwebsocketimportbase64importosdriver=selenium.webdriver.Firefox()driver.ge......