Python .NET WinForms - 如何将信息从文本框传递到按钮单击事件

2024-04-25

在回答我的问题之前,我正在(自学)学习 Python 和 .NET CLR 如何相互交互。这是一次有趣的经历,但有时也是一次令人沮丧的经历。

话虽如此,我正在使用 .NET WinForm,它应该只是传递输入到文本框中的数据并通过消息框显示它。学习如何做到这一点应该会促使我采用其他传递数据的方式。这个简单的任务似乎让我难以理解,而且我似乎找不到任何关于如何完成此任务的好的文档。有人尝试过吗?如果是这样,我愿意学习,所以是否有人可以指出我正确的方向或给我一个关于我做错了什么的提示?

PS - 我已经在 C#.NET 和 VB.NET 中完成了一些编码,因此变量的传递似乎应该足够了,但显然还不够。

import clr

clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")

from System.Windows.Forms import *
from System.Drawing import *

class MyForm(Form):
    def __init__(self):

        # Setup the form
        self.Text = "Test Form"
        self.StartPosition = FormStartPosition.CenterScreen # https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.form.startposition?view=net-5.0

        # Create label(s)
        lbl = Label()
        lbl.Parent = self
        lbl.Location = Point(15,15) # From Left, From Top
        lbl.Text = "Enter text below"
        lbl.Size =  Size(lbl.PreferredWidth, lbl.PreferredHeight)

        # Create textbox(s)
        txt = TextBox()
        txt.Parent = self
        txt.Location =  Point(lbl.Left - 1, lbl.Bottom  + 2) # From Left, From Top

        # Create button(s)
        btn = Button()
        btn.Parent = self
        btn.Location =  Point(txt.Left - 1, txt.Bottom + 2) # From Left, From Top
        btn.Text = "Click Me!"

        btn.Click += self.buttonPressed

    def buttonPressed(self, sender, args):
        MessageBox.Show('This works.')
        MessageBox.Show(txt.Text) # This does not

Application.EnableVisualStyles()
Application.SetCompatibleTextRenderingDefault(False)

form = MyForm()
Application.Run(form)

txt是一个局部变量__init__,这意味着您无法从任何其他功能访问它。要修复它,请将其附加到实例变量self(指的是实例本身):

self.txt = TextBox()
self.txt.Parent = self
self.txt.Location =  Point(lbl.Left - 1, lbl.Bottom  + 2) # From Left, From Top

and

def buttonPressed(self, sender, args):
    MessageBox.Show('This works.')
    MessageBox.Show(self.txt.Text) # Now this does too
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python .NET WinForms - 如何将信息从文本框传递到按钮单击事件 的相关文章

  • 将numpy字符串数组转换为int数组[重复]

    这个问题在这里已经有答案了 我有一个 numpy ndarray a 0 99 0 56 0 56 2 02 0 96 如何将其转换为int 输出 a 0 99 0 0 0 56 0 56 2 02 0 96 我想要 0 0 代替空白 im
  • 使用光栅重新投影 .tiff 文件:CRSError:无法解析 WKT。 OGR 错误代码 6

    我正在尝试使用以下代码将 tiff 文件重新投影到 EPSG 32638 我安装过的版本 光栅版本 1 1 5 Numpy 版本 1 18 1 这是我正在使用的代码 https rasterio readthedocs io en late
  • 在Python中修改大型文本文件最后一行的最有效方法

    我需要更新几个超过 2GB 的文件的最后一行 这些文件由无法读取的文本行组成readlines 目前 它可以通过逐行循环来正常工作 但是 我想知道是否有任何编译库可以更有效地实现这一点 谢谢 目前的方法 myfile open large
  • 我可以在 WinRT / Windows 8 Store 应用程序中绑定 DynamicObject

    我有以下代码 public class MyClass DynamicObject INotifyPropertyChanged Dictionary
  • scikit-learn - 具有置信区间的 ROC 曲线

    我可以使用 ROC 曲线scikit learn with fpr tpr thresholds metrics roc curve y true y pred pos label 1 where y true是基于我的黄金标准的值列表 即
  • 如何使构造函数只能由基类访问?

    如果我想要一个只能从子类访问的构造函数 我可以使用protected构造函数中的关键字 现在我想要相反的 我的子类应该有一个构造函数 该构造函数可以由其基类访问 但不能从任何其他类访问 这可能吗 这是我当前的代码 问题是子类有一个公共构造函
  • FileStream - “不支持给定路径的格式”

    我正在尝试使用EPPlus http epplus codeplex com 在我们的 LAN 上保存电子表格 我正在使用一个FileStream对象执行此操作 但是每当我尝试实例化该对象时 我都会收到错误 The given path s
  • 如何使用 OpenCV 检测图像帧中的对象?

    我正在使用 Raspberry Pi 开发一个漫游器 它将清扫房间并捡起掉落在地上的物体 为了检测物体 我使用了在流动站操作开始时拍摄的参考图像 以及每 10 秒单击一次的图像 新图像 为了确定图像帧是否发生变化 我在参考图像和新图像之间进
  • 如何找到运行代码的 conda 环境的名称?

    我正在寻找一种好方法来从正在运行的代码或交互式 python 实例中找出我所在的 conda 环境的名称 用例是我通过 miniconda 安装运行带有 Python 2 和 Python 3 内核的 Jupyter 笔记本 默认环境是Py
  • 如何在 Python 中小写字符串?

    有没有办法将字符串转换为小写 Kilometers kilometers See How to change a string into uppercase https stackoverflow com questions 9257094
  • 如何让 list_blobs 表现得像 gsutil

    我只想获得 GCS 上假文件夹结构的第一级 如果我运行例如 gsutil ls gs gcp public data sentinel 2 tiles 我得到一个这样的列表 gs gcp public data sentinel 2 til
  • 抑制来自 python pandas 描述的名称 dtype

    可以说我有 r pd DataFrame A 1 B pd Series 1 index list range 4 dtype float32 And r B describe mean std min max 给出输出 mean 1 0
  • tweepy 计数限制为 200?

    我目前正在尝试检索一些拥有大量关注者的大帐户的关注者 我正在使用 Tweepy 和这段代码 带光标 follower cursors tweepy Cursor api followers id id var count 5000 for
  • 日志处理程序是否使用单独的线程?

    蟒蛇的日志处理程序 http docs python org library logging handlers html都很棒 其中一些 例如SMTP处理程序 http docs python org library logging han
  • 自定义编译器警告

    在 Net 中使用 ObsoleteAtribute 时 它 会向您发出编译器警告 告诉您该对象 方法 属性已过时 应使用其他内容 我目前正在从事一个需要大量重构前员工代码的项目 我想编写一个自定义属性 可用于标记方法或属性 这些方法或属性
  • Python:使用 FOR 循环插入字典

    我已经在论坛中进行了搜索 但不明白是否可以使用以下构造将新条目插入到我的 Python 字典中 而不将其转换为列表 for x in range 3 pupils dictionary new key input Enter new key
  • Python Shutil.copy 如果我有重复文件,它会复制到新位置吗

    我正在与shutil copypython 中的方法 我找到了下面列出的定义 def copyFile src dest try shutil copy src dest eg src and dest are the same file
  • 从原始 URL 获取重定向 URL

    我的数据库中有一个表 其中包含一些网站的 URL 我必须打开这些 URL 并验证这些页面上的一些链接 问题是某些 URL 被重定向到其他 URL 对于这样的 URL 我的逻辑是失败的 有什么方法可以传递原始 URL 字符串并获取重定向的 U
  • 从tensorflow 2.0 beta中的tf.data.Dataset检索下一个元素

    在tensorflow 2 0 beta之前 要从tf data Dataset中检索第一个元素 我们可以使用迭代器 如下所示 usr bin python import tensorflow as tf train dataset tf
  • 使用按钮从 Django 项目根下载文件

    So this is the webpage I m creating atm with Django 1 8 希望用户能够将数据导出为 csv 当用户 在框中写下 Reddit 子版块名称 按下 获取数据 按钮 会发生什么 它创建了一个

随机推荐