所有 tkinter 函数在程序启动时运行

2023-12-12

我在使用 tkinter 时遇到了一个以前从未遇到过的非常奇怪的问题。在任何地方为小部件(例如按钮或菜单项)设置命令时,该命令都会在应用程序启动时运行。基本上,该命令不会等到单击小部件才运行。在我的代码中,我知道我没有打包按钮,这是为了表明小部件甚至不必绘制到屏幕上就会发生此问题。有谁知道可能是什么原因造成的?谢谢!

from tkinter import *

class menuItems(object):
    def __init__(self):
        menubar = Menu(app)
        filemenu = Menu(menubar, tearoff=0)
        filemenu.add_command(label="New...", command=self.new())
        filemenu.add_command(label="Open...", command=self.open())
        filemenu.add_command(label="Save", command=self.save())
        filemenu.add_separator()
        filemenu.add_command(label="Exit", command=app.quit)
        menubar.add_cascade(label="File", menu=filemenu)
        app.config(menu=menubar)

    def new(self):
        pass

    def open(self):
        pass

    def save(self):
        print("You have saved the file")

def this_should_not_run():
    print("Yay! I didn't run!")

def this_will_run_even_though_it_should_not():
    print("You can't stop me!")

def init():
    global app, menu
    app = Tk()
    app.title("Words with Python")
    app.geometry("800x500+50+50")

    menu = menuItems()

    frame = Frame(app)
    scrollbar = Scrollbar(frame, orient=VERTICAL)
    textbox = Text(frame, yscrollcommand=scrollbar.set)
    scrollbar.config(command=textbox.yview)
    scrollbar.pack(side=RIGHT, fill=Y)
    textbox.pack(side=LEFT, fill=BOTH, expand=1)
    frame.pack(fill=BOTH, expand=1)

    button = Button(app, text="Nothing", command=this_will_run_even_though_it_should_not())

    return

init()

app.mainloop()

去除()s 在你的命令定义中。现在,您正在调用该函数并将返回值绑定到command参数,而您需要绑定函数本身,以便稍后可以调用它们。

所以像这样的一行:

filemenu.add_command(label="New...", command=self.new())

实际上应该是这样的:

filemenu.add_command(label="New...", command=self.new)

(实际上,您在一个地方正确地执行了此操作:filemenu.add_command(label="Exit", command=app.quit))

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

所有 tkinter 函数在程序启动时运行 的相关文章

  • 从数据框中按索引删除行

    我有一个数组wrong indexes train其中包含我想从数据框中删除的索引列表 0 63 151 469 1008 要删除这些索引 我正在尝试这样做 df train drop wrong indexes train 但是 代码失败
  • Python中Decimal类型的澄清

    每个人都知道 或者至少 每个程序员都应该知道 http docs oracle com cd E19957 01 806 3568 ncg goldberg html 即使用float类型可能会导致精度错误 然而 在某些情况下 精确的解决方
  • Python Popen 与 psexec 挂起 - 不良结果

    我对 subprocess Popen 和我认为是管道的问题有疑问 我有以下代码块 从 cli 运行时 100 都不会出现问题 p subprocess Popen psexec serverName get cmd c ver echo
  • 我怎样才能更多地了解Python的内部原理? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我使用Python编程已经有半年多了 我对Python内部更感兴趣 而不是使用Python开发应用程序
  • Python模块可以访问英语词典,包括单词的定义[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 python 模块 它可以帮助我从英语词典中获取单词的定义 当然有enchant 这可以帮助我检查该单词是否存在于英语中
  • 从 ffmpeg 获取实时输出以在进度条中使用(PyQt4,stdout)

    我已经查看了很多问题 但仍然无法完全弄清楚 我正在使用 PyQt 并且希望能够运行ffmpeg i file mp4 file avi并获取流式输出 以便我可以创建进度条 我看过这些问题 ffmpeg可以显示进度条吗 https stack
  • 填充两个函数之间的区域

    import matplotlib pyplot as plt import numpy as np def domain x np arange 0 10 0 001 f1 lambda x 2 x x 2 0 5 plt plot x
  • Pandas 数据帧到 numpy 数组 [重复]

    这个问题在这里已经有答案了 我对 Python 很陌生 经验也很少 我已经设法通过复制 粘贴和替换我拥有的数据来使一些代码正常工作 但是我一直在寻找如何从数据框中选择数据 但无法理解这些示例并替换我自己的数据 总体目标 如果有人真的可以帮助
  • 切片 Dataframe 时出现 KeyError

    我的代码如下所示 d pd read csv Collector Output csv df pd DataFrame data d dfa df copy dfa dfa rename columns OBJECTID Object ID
  • 使用 OLS 回归预测未来值(Python、StatsModels、Pandas)

    我目前正在尝试在 Python 中实现 MLR 但不确定如何将我找到的系数应用于未来值 import pandas as pd import statsmodels formula api as sm import statsmodels
  • 如何通过在 Python 3.x 上按键来启动和中断循环

    我有这段代码 当按下 P 键时会中断循环 但除非我按下非 P 键 否则循环不会工作 def main openGame while True purchase imageGrab if a sum gt 1200 fleaButton ti
  • Python urllib.request.urlopen:AttributeError:'bytes'对象没有属性'data'

    我正在使用 Python 3 并尝试连接到dstk 我收到错误urllib包裹 我对SO进行了很多研究 但找不到与这个问题类似的东西 api url self api base street2coordinates api body jso
  • 从 python 发起 SSH 隧道时出现问题

    目标是在卫星服务器和集中式注册数据库之间建立 n 个 ssh 隧道 我已经在我的服务器之间设置了公钥身份验证 因此它们只需直接登录而无需密码提示 怎么办 我试过帕拉米科 它看起来不错 但仅仅建立一个基本的隧道就变得相当复杂 尽管代码示例将受
  • Numpy 过滤器平滑零区域

    我有一个 0 及更大整数的 2D numpy 数组 其中值代表区域标签 例如 array 9 9 9 0 0 0 0 1 1 1 9 9 9 9 0 7 1 1 1 1 9 9 9 9 0 2 2 1 1 1 9 9 9 8 0 2 2 1
  • 如何设置 Celery 来调用自定义工作器初始化?

    我对 Celery 很陌生 我一直在尝试设置一个具有 2 个独立队列的项目 一个用于计算 另一个用于执行 到目前为止 一切都很好 我的问题是执行队列中的工作人员需要实例化一个具有唯一 object id 的类 每个工作人员一个 id 我想知
  • 首先对列表中最长的项目进行排序

    我正在使用 lambda 来修改排序的行为 sorted list key lambda item item lower len item 对包含元素的列表进行排序A1 A2 A3 A B1 B2 B3 B 结果是A A1 A2 A3 B
  • 将 matplotlib 颜色图集中在特定值上

    我正在使用 matplotlib 颜色图 seismic 绘制绘图 并且希望白色以 0 为中心 当我在不进行任何更改的情况下运行脚本时 白色从 0 下降到 10 我尝试设置 vmin 50 vmax 50 但在这种情况下我完全失去了白色 关
  • 如何为每个屏幕添加自己的 .py 和 .kv 文件?

    我想为每个屏幕都有一个单独的 py 和 kv 文件 应通过 main py main kv 中的 ScreenManager 选择屏幕 设计应从文件 screen X kv 加载 类等应从文件 screen X py 加载 Screens
  • 您可以将操作直接应用于map/reduce/filter 中的参数吗?

    map and filter通常可以与列表理解互换 但是reduce并不那么容易被交换map and filter 此外 在某些情况下我仍然更喜欢函数语法 但是 当您需要对参数本身进行操作时 我发现自己正在经历语法体操 最终必须编写整个函数
  • Scrapy Spider不存储状态(持久状态)

    您好 有一个基本的蜘蛛 可以运行以获取给定域上的所有链接 我想确保它保持其状态 以便它可以从离开的位置恢复 我已按照给定的网址进行操作http doc scrapy org en latest topics jobs html http d

随机推荐

  • 在 Android 中的 Horizo​​ntalScrollView 中动态插入视图

    我正在为 Android 平板电脑 3 0 开发一个应用程序 该应用程序有一个应可在水平轴上滚动的活动 如电子书 为此 我在布局上的 Horizo ntalScrollView 内使用relativelayout 这是 XML
  • Android指纹扫描仪应用程序[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我在浏览网页时看到一个应用程序声称可以扫描用户的指纹 所以我想我应该尝试一下 该应用程序运行良好 我很惊讶 有谁知道这个应用程序如何读取用户的指纹
  • 为什么即使对象创建失败,Postgres 序列项也会上升?

    我有一个 Postgres 项目 其中我的模型之一是Client只需通过其主键进行索引 我在创建客户端时遇到了问题 因为有人创建了一个客户端 同时显式设置了我读过的主键 这不会影响 Postgres 的客户端序列表 该序列表负责在任何时候自
  • Airflow:高效地执行等待(睡眠)任务

    我需要在Airflow中实现等待任务 等待时间大约需要几个小时 第一的 TimeDeltaSensor 无法正常工作 SLEEP MINUTES 1ST 11 sleep task 1 TimeDeltaSensor task id sle
  • 单击按钮时 kivy 加载相机(zbarscan)

    我刚刚开始我的第一个 kivy 应用程序 该应用程序旨在从 开始扫描 按钮启动 然后显示使用 ZBarCam 构建的 QR 扫描仪 我正在使用 ScreensScreenManager要从按钮视图更改为相机视图 使用 zbarcam 问题是
  • Eclipse + Java:如何从默认包导入类?

    我在实体包中有类 但我仍然想运行默认包中的导入内容 我该怎么做 你不知道 Sorry 虽然我引用的是其他答案 您可以查看ORACLE参考这表明这是预期的行为 我建议将您的东西移动到指定的包中 如果你绝对无法重构 你可以尝试使用反射来访问它
  • 哪个图形 API 应与 Azure AD B2C 一起使用

    我们正在考虑在应用程序中使用 Azure AD B2C 但我对使用 Azure AD B2C 时使用哪个包感到困惑 此问题讨论 MSAL 和 ADAL 库之间的区别 用于 Azure AD B2C 和 Xamarin 的 MSAL 或 AD
  • 设置捕获设备 EmguCV

    我正在使用类Capture从 EmguCV 从网络摄像头拍摄图像 根据该类的文档 http www emgu com wiki files 2 0 0 0 html 18b6eba7 f18b fa87 8bf2 2acff68988cb
  • GWT 模拟框架的综合优缺点

    我有兴趣为我的 GWT 应用程序使用正确的模拟框架 据我了解 Mockito EasyMock 和 jMock 是 Java 中最流行的一些 有人可以列出他们最熟悉的与 GWT 相关的模拟框架的优点 缺点 以帮助像我这样的 GWT 测试菜鸟
  • 如何解决 Newtonsoft.JSON 依赖性问题?

    我们的服务器上有 NET Framework 4 6 2 我们的项目使用最新版本的Newtonsoft Json 当我尝试运行我们的项目时 它失败并出现以下错误 Could not load file or assembly System
  • Rails multi_db 与事务

    我最近在我的 Rails 2 3 10 应用程序上安装了 multi db gem 以便使用 MySql 主 从复制 自从安装 gem 以来 每次我在代码中使用事务时 例如 MyModel connection transaction do
  • 在 DatePicker 中设置时区 (Android)

    我在 Android 应用程序中使用 DatePicker 来显示用户可以选择的可用日期 我想显示 GMT 时区的日期 以便所有用户看到相同的日期 我还没有找到任何修改 DatePicker 的时区的方法 我看到 DatePicker 使用
  • 如何发出多个请求并等待数据来自Retrofit 2.0中的所有请求 - android

    当前代码 Retrofit retrofit new Retrofit Builder baseUrl Constant BASEURL addConverterFactory GsonConverterFactory create bui
  • 在 JavaScript 中获取工作日的下一个日期

    如何才能返回下一个date给定工作日的日期 可以是数字 0 6 或名称 Sunday Saturday 例如 如果今天 在2009 年 10 月 16 日星期五我通过了 Friday 它将返回今天的日期2009 年 10 月 16 日 Sa
  • 删除 Mongo 集合不会清理磁盘空间

    我有一个包含 750 000 个文档的集合 它占用了大约 7Gb 的磁盘空间 我已经删除了该集合 但是文件 test 0 test 11 仍然在磁盘上 如果我删除它们 那么我会丢失所有集合 而不仅仅是我删除的集合 Mongo 不应该删除它们
  • 为什么Java 6重写SortedMap中的keySet()、entrySet()和values()接口

    Java 5 http docs oracle com javase 1 5 0 docs api java util SortedMap html Java 6 https docs oracle com javase 6 docs ap
  • iOS 如何检测用户是否使用 home+power 进行了截图?

    我正在尝试检测用户是否截取屏幕截图 以警告他们这是一个受版权保护的视频 我尝试过达尔文通知 但它不起作用 NSMetadataQuery 可能是一个解决方案 但我们希望该应用程序也能在 iOS4 上运行 有人可以帮助我吗 谢谢 p 无法检测
  • SignalR 连接无法启动到 IIS 托管的应用程序

    我制作了一个应用程序 并尝试通过 SignalR 连接到后端 ASP NET Core 3 1 后端托管在 IIS 中 以便于开发 在客户端上调用 StartAsync 方法成功协商 但随后在 GET 上永远挂起 GET http loca
  • 使用 Jackson 忽略字段而不修改 POJO 类

    我的 POJO 类有 JsonIgnore在字段的声明上 而不是在 getter 和 setter 方法上 这是一个生成的文件 我无法对其进行太多更改 如何在使用时忽略该字段JsonGenerator Setting Using JsonI
  • 所有 tkinter 函数在程序启动时运行

    我在使用 tkinter 时遇到了一个以前从未遇到过的非常奇怪的问题 在任何地方为小部件 例如按钮或菜单项 设置命令时 该命令都会在应用程序启动时运行 基本上 该命令不会等到单击小部件才运行 在我的代码中 我知道我没有打包按钮 这是为了表明