如何用python制作一个带有按钮的窗口

2023-12-31

如何创建一个函数来创建一个带有两个按钮的窗口,其中每个按钮都有一个指定的字符串,如果单击,则返回一个指定的变量?类似于此视频中的@3:05https://www.khanacademy.org/science/computer-science-subject/computer-science/v/writing-a-simple-factorial-program---python-2 https://www.khanacademy.org/science/computer-science-subject/computer-science/v/writing-a-simple-factorial-program---python-2(我知道这是一个非常简单的初学者程序的教程,但这是我能找到的唯一视频)但没有文本框,并且我对“确定”和“取消”按钮的功能有更多控制。

我是否必须创建一个窗口,绘制一个其中包含字符串的矩形,然后创建一个循环来检查鼠标移动/鼠标单击,然后在鼠标坐标位于其中一个按钮内部时返回某些内容,并且鼠标被点击? 或者是否有一个函数/一组函数可以使带有按钮的窗口变得更容易?还是一个模块?


Overview

不,你不必“画一个矩形,然后做一个循环”。你什么will所要做的就是导入某种 GUI 工具包,并使用该工具包内置的方法和对象。一般来说,其中一种方法是运行一个循环来侦听事件并根据这些事件调用函数。这个循环称为事件循环。因此,虽然这样的循环必须运行,但您不必创建循环。

Caveats

如果您希望通过提示(例如您链接到的视频中的提示)打开窗口,那么问题会有点棘手。这些工具包并不是为以这种方式使用而设计的。通常,您编写一个完整的基于 GUI 的程序,其中所有输入和输出都是通过小部件完成的。这并非不可能,但在我看来,学习时应该坚持所有文本或所有 GUI,而不是混合两者。

使用 Tkinter 的示例

例如,tkinter 就是这样的工具包之一。 Tkinter 是 python 内置的工具包。任何其他工具包(例如 wxPython、PyQT 等)都非常相似并且工作得一样好。 Tkinter 的优点是您可能已经拥有它,并且它是学习 GUI 编程的绝佳工具包。对于更高级的编程来说,它也很棒,尽管您会发现有人不同意这一点。别听他们的。

这是 Tkinter 中的一个示例。此示例适用于 python 2.x。对于 python 3.x,您需要从以下位置导入tkinter而不是Tkinter.

import Tkinter as tk

class Example(tk.Frame):
    def __init__(self, parent):
        tk.Frame.__init__(self, parent)

        # create a prompt, an input box, an output label,
        # and a button to do the computation
        self.prompt = tk.Label(self, text="Enter a number:", anchor="w")
        self.entry = tk.Entry(self)
        self.submit = tk.Button(self, text="Submit", command = self.calculate)
        self.output = tk.Label(self, text="")

        # lay the widgets out on the screen. 
        self.prompt.pack(side="top", fill="x")
        self.entry.pack(side="top", fill="x", padx=20)
        self.output.pack(side="top", fill="x", expand=True)
        self.submit.pack(side="right")

    def calculate(self):
        # get the value from the input widget, convert
        # it to an int, and do a calculation
        try:
            i = int(self.entry.get())
            result = "%s*2=%s" % (i, i*2)
        except ValueError:
            result = "Please enter digits only"

        # set the output widget to have our result
        self.output.configure(text=result)

# if this is run as a program (versus being imported),
# create a root window and an instance of our example,
# then start the event loop

if __name__ == "__main__":
    root = tk.Tk()
    Example(root).pack(fill="both", expand=True)
    root.mainloop()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用python制作一个带有按钮的窗口 的相关文章

随机推荐

  • iOS 8+ 远程通知功能始终启用

    仅适用于 iOS gt 8 在我的 AppDelegate 中 我注册用户通知 如下所示 BOOL application UIApplication application didFinishLaunchingWithOptions NS
  • 从动态库调用 fprintf (c++)

    我正在创建一个包含日志记录类的 Windows DLL 库 该类中的日志函数只是像这样调用 fprintf 来进行测试 fprintf stderr 调试 s n 你好 现在 如果我从其他项目 使用该库 中的任何文件中的任何函数使用它 这个
  • 更改字体很棒的图标中的字体大小

    我正在使用 parallax pro genesis 子主题 因此我正在小部件区域内工作 我不确定我是否以正确的方式处理这个问题 但我尝试通过在小部件区域中执行此操作 在很棒的字体图标下进行书写 i class fa fa code fa
  • 当“try .. except IOError”没有捕获FileNotFoundError时如何处理它?

    如何捕获 python 3 上的错误 我用谷歌搜索了很多 但似乎没有一个答案有效 文件 open txt 不存在 因此应该打印 e errno 这就是我现在尝试的 这是我定义的函数 try with open file r as file
  • Python 中的重复排列

    我想迭代一个的所有顶点n尺寸为 1 的维度立方体 我知道我可以做到这一点itertools product如下 gt gt gt n 3 gt gt gt for j in it product 0 1 repeat n print j 0
  • 在钥匙串访问中生成证书签名请求:使用哪个私钥?

    我想知道 Mac OS X Snow Leopard 现在的 Lion 中使用哪个私钥 Keychain Access 每当我使用该应用程序创建 CSR 时 它甚至不要求使用私钥 那么它使用哪一个呢 我可以想象它使用了所选的一个 if您已在
  • 捕获两个重叠元素上的鼠标悬停事件

    所以我有一个 d3 图表rect覆盖以固定十字准线元素mouseover事件 在覆盖层下 我有其他显示数据的矩形mouseover事件处理程序也是如此 但是覆盖层被阻塞mouseover事件在下面的子矩形上形成触发器 let chartWi
  • C 中的静态数组初始化

    考虑以下陈述 typedef struct int member1 int member2 Custom t void ISR void static Custom t struct1 SOME CONSTANT 如何在 C 编程中将所有
  • 在 R 中读取以多个空格作为分隔符的文本文件

    我有一个大数据集 由大约 94 列和 300 万行组成 该文件具有单个和多个空格作为列之间的分隔符 我需要在 R 中读取该文件中的一些列 为此 我尝试使用 read table 以及可以在下面的代码中看到的选项 代码粘贴在下面 Defini
  • iOS 应用程序中的 Airplay 镜像

    我查看了几个链接并阅读了 Apple 文档 但没有得到任何在外部设备上镜像应用程序内容的分步说明 他们所解释的只是如何在识别到外部屏幕时显示新窗口 在我的应用程序中 我只需要在支持 Airplay 的设备上显示应用程序中显示的当前屏幕 有一
  • bash:expect 可以处理多个密码提示吗?

    我目前正在使用 Expect 来传递密码 这样我的脚本就可以自动运行 而无需我坐下来一遍又一遍地输入相同的密码 重要提示 请不要评论这有多大的安全风险或我应该如何使用 ssh 密钥 如果可以的话我会使用这些密钥 但我必须使用的设置不允许这样
  • 我可以生成自定义编译器错误吗?如果是这样,怎么办?

    这就是我想做的 我有一个项目必须在某些版本的 Delphi 或更高版本中编译 我想使用条件编译器指令来测试 Delphi 版本 然后使用自定义消息生成自定义编译器错误 如果不可能出现错误 能够生成自定义编译器警告或提示也足够了 当然 我可以
  • IIS 7 通过 HTTPS 进行 POST 是否有限制?

    我正在 PHP 中构建一个 Web 服务 用于处理通过 SOAP 请求从 Windows 应用程序接收到的数据 Windows 应用程序有点像黑匣子 但它会生成很长的消息流 然后将它们作为单个 SOAP 请求进行发布 使用 HTTP 可以正
  • 来自 c# 的 PInvoke c++ dll - 尝试加载格式不正确的程序。 (HRESULT 异常:0x8007000B)

    尝试使用 Dll 导入从 C 访问旧的 C DLL 已经在网上搜索了大约4天 但没有成功 我正在尝试使用来自 asp net mvc 3 网站 net 4 的 c dll 我已将平台目标更改为 x86 我已在 iis 中的应用程序池上将 启
  • 在 Xcode 4.5 中,“显示实时问题”不再起作用

    我发现 Xcode 在我编写代码时显示编译器警告非常有用 例如 如果我写了 ldksjfksdj 我希望立即看到一个红色感叹号图标和警告 use of undeclared identifier 但现在使用 Xcode 4 5 我只能在编译
  • 有没有使用 WebDav 的 Dreamweaver 开源替代方案?

    我们希望使用 WebDav 来处理我们的模板 但无法使用 Dreamweaver 有什么建议么 谢谢你 任何文本编辑器都应该在这里完成工作 我推荐崇高文本2 http www sublimetext com 2 or 记事本 http no
  • “AND NOT”运算的正则表达式[重复]

    这个问题在这里已经有答案了 我正在寻找一个通用的正则表达式构造来匹配模式 x 中的所有内容 除了匹配模式 y 之外 这很难完整而简洁地解释 看实质性非暗示 http en wikipedia org wiki Material nonimp
  • JSON 二进制值包含无效数据

    因此 当我运行一个查询 将子查询的结果聚合到包含 JSON 对象的 JSON 数组中时 出现以下错误 The JSON binary value contains invalid data 这适用于 8 0 15 但不适用于 8 0 17
  • 如何测试 double 是否为整数

    是否有可能做到这一点 double variable variable 5 the below should return true since 5 is an int if variable were to equal 5 7 then
  • 如何用python制作一个带有按钮的窗口

    如何创建一个函数来创建一个带有两个按钮的窗口 其中每个按钮都有一个指定的字符串 如果单击 则返回一个指定的变量 类似于此视频中的 3 05https www khanacademy org science computer science