在 Tkinter 中使用按钮调用函数后返回值

2023-11-30

from Tkinter import *
from tkFileDialog import askopenfilename
from PIL import Image
def main():
    filename = askopenfilename(filetypes=[("Jpeg","*.jpg")])
return filename
root = Tk()
button = Button(root,text="Open",command=main)
button.pack()
root.title("Image Manipulation Program")
root.mainloop()

一般来说,我是编程新手,但我正在尝试通过 Tkinter GUI 库制作一个成像程序。我需要在上面的代码中做的是返回存储在文件名中的字符串,以便它位于程序的全局范围内,并且我可以使用它。问题是我不知道在使用按钮调用函数时如何执行此操作。我在任何网站上都找不到这个问题的答案,因此我非常感谢任何人对这个问题的帮助。


如果您使用基于类的方法对于 Tk 应用程序,您可以将它们分配给实例变量,而不是从事件处理程序返回值。这是最好的方法,因为基于函数的 GUI 应用程序不能很好地扩展,因为需要将内容放置在模块范围内。

from Tkinter import *

class Application(Frame):

    def main(self):
        self.filename = askopenfilename(filetypes=[("Jpeg","*.jpg")])

    def createWidgets(self):
        self.button = Button(root,text="Open",command=self.main)
        self.button.pack()

    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.filename = None
        self.pack()
        self.createWidgets()

root = Tk()
root.title("Image Manipulation Program")
app = Application(master=root)
app.mainloop()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Tkinter 中使用按钮调用函数后返回值 的相关文章

随机推荐

  • 连接到 SQL Server 2008 R2 Express 时出错

    我已在 Windows 7 上安装了 SQL Server 2008 R2 Express 当我在 VS2010 中运行 Web 项目时 我收到以下错误 发生网络相关或特定于实例的错误 建立与 SQL Server 的连接 找不到服务器或
  • 创建 Android 签名证书 SHA-1 时如何解决此错误“在 c:\Users\kulde\.android\ 中找不到 debug.keystore”

    我正在尝试创建 google 登录应用程序 其中我需要 Android 签名证书 SHA 1 首先有一个 android 文件夹 其中包含另外两个文件 但那些不是 debug keystore 所以我在 stackoverflow 上读到了
  • javascript:如何将日期字符串 (YYYY-MM-DD) 增加 1 天

    我知道如何在 php 中使用 date 和 mktime 函数执行此操作 但不知道如何在 javascript 中完成相同的操作 function incr date date str magic here return next date
  • 如何从 OpenLayers.Control.DrawFeature 获取积分返回

  • Jquery CSS 和 JS 限制元素 [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我想将 Jquery 移动 CSS 和 JS 仅应用于某些有限的元素 而不应用于页面上的其他元素 知道我该怎么做吗 我有一些 Salesforce 标准客户门户 其中包含一个包含 Jq
  • 如何在 Perl 6 中向我的自定义类添加下标?

    我是 Perl 6 的新手 我的 Atom 编辑器中有以下代码 但我仍然不明白它是如何工作的 我复制了以下代码 作为docs raku org说了 不过好像不行 所以我将代码更改为 use v6 class HTTPHeader class
  • 无法返回 cellForRowAtIndexPath 中的单元格

    我试图在 tableView 中返回不同的单元格 通常在这种情况下 我会返回不同的单元格 然后在底部返回 nil 但在这种情况下 它会给我带来错误 我也尝试过返回一个空单元格 但也给了我错误 我尝试过的 return nil and var
  • 如何测试网络管道服务是否正在监听

    如何以编程方式测试以查看特定的网络管道服务是否正在运行和侦听 这样我就不会收到 没有端点正在侦听 异常 例如 如果我有这个代码 Uri baseAddress new Uri http localhost something var Ser
  • 在画布上绘图时的偏移

    有一个简单的绘图应用程序 问题出在坐标 redraw函数 它们必须是鼠标 但接近 2x 鼠标 代码中有什么问题
  • mysqli 使用 p: connect 选项打开多个新进程

    这是我第一次在这里提问 我搜索了 Google stackoverflow 等 寻求帮助解决我遇到的问题 我们目前使用 PHP 5 3 10 和 MySQL 5 0 95 以及 Apache 2 2 21 CentOS 我们正在开始从旧的
  • 云中的 Elastic Search 集群

    我有 2 个 Linux VM 均位于云提供商的同一数据中心 Elastic1 和 Elastic2 其中 Elastic 2 是 Elastic 1 的克隆 两者都有相同的 centos 版本 相同的集群名称和相同的 ES 版本 Elas
  • 在R中绘制椭圆/双曲线

    我想在R中画椭圆 双曲线 我该如何使用 ggplot2 来做到这一点 让我举个例子 x 2 3xy 4x 2y 2y 2 0 for x between 2 and 2 y between 2 and 2 构造数据字段 d lt trans
  • 提供者与Oracle客户端版本不兼容

    我正在尝试使用Oracle ODP NET 11g 11 1 0 6 20 即时客户端在我的 ASP net 项目中数据提供者但是当我运行 aspx 页面时 我得到一个 提供者与Oracle客户端版本不兼容 错误消息 任何帮助将不胜感激 我
  • 由于放弃的提交而导致 Git 合并挂起

    我有两个提交 提交 B 依赖于提交 A 提交 A 被放弃 现在我在合并 B 时遇到错误 它说已提交 由于 B 对 A 的依赖而合并待处理 我用谷歌搜索过但找不到确切的答案 我需要一步一步的解决方案 因为我是 git 的新手 并且很难理解如何
  • 将 Dagger 与 java 11 和 Maven 一起使用

    Google Dagger DIF 是否适用于 java 11 如果不是 鉴于不可能将项目更改为使用 java 8 那么替代方案是什么 是的 可以将 dagger 2 32 与 maven 和 java 11 一起使用 我遇到了编译过程和
  • SQL 格式时间对象从 24 小时到 12 点

    有没有办法在 SQL 中将时间对象转换为 12 小时格式 我不能使用日期时间 因为检索的数据不是特定于日期的 16 45 00 gt 下午 4 45 尝试使用这个 DECLARE aux NVARCHAR 8 16 45 00 SELECT
  • 可能的空引用返回c# linq

    我有这个 linq 查询 它抱怨警告消息 警告 CS8603 可能返回空引用 Code return await applicationDbContext Pies Include x gt x Portions AsSingleQuery
  • Secrets 模块如何在 Python 中生成完美的随机序列

    现在我对数学有了相当的了解 并且我知道可以使用特定的数学算法创建伪随机序列 我还知道在Python中有一个secrets显然可以产生随机数的模块 我尝试对其进行一些调整 但我仍然不明白它应该如何工作 我们来说一下这段代码 import se
  • 使用 lodash 重塑 JSON 并减少

    我想根据从 URL 下载的已解析 CSV 文件重塑 JSON 我使用 csvtojson 模块来解析 CSV 并创建需要重新整形的 JSON 下面是我的完整代码 const require lodash to handle datetime
  • 在 Tkinter 中使用按钮调用函数后返回值

    from Tkinter import from tkFileDialog import askopenfilename from PIL import Image def main filename askopenfilename fil