首页 \ 问答 \ Python Tkinter条目验证(Python Tkinter Entry validate)

Python Tkinter条目验证(Python Tkinter Entry validate)

我正在使用Tkinter在Python 3.6中编写一个程序,其中一个客户有多个(11)输入字段。 我希望这些输入字段只接受整数,并且能够定义最大字符数。

我已经有一个这样做的功能。 但是这个功能只适用于一个输入字段。 我已经尝试通过调用函数输入变量,以便例如更改另一个输入字段。 我无法做到这一点。

这是我有1个输入字段的功能。

    def limitMuntgeld(self, *args):
        value = self.invoerM.get()
        if len(value) > 5:
            self.invoerM.set(value[:5])
        if value.lower() in "abcdefghijklmnopqrstuvwxyz-=[];/":
            self.invoerM.set(value[:0])

这是与该函数一起使用的示例输入字段代码

self.invoerMuntgeld = Entry(self, font=('Arial', 14), textvariable=self.invoerM)

这与下面发布的输入字段中的跟踪相结合。

self.invoerM = StringVar()
self.invoerM.trace('w', self.limitMuntgeld)

我也尝试了vcmd和validatecommand。 但是,没有好的结果。 我的endresult将是一个与所有输入字段一起工作的函数。 如果任何人有任何建议,我都耳朵!


I am writing a program in Python 3.6 using Tkinter where a customer has multiple(11) entry fields. I want these entry fields to only accept integers and also be able to define the maximum amount of characters.

I already have a function that does this. But this function only works for one entry field. I have tried entering variables with calling the function so it changes another entry field for example. I was not able to do this.

This is the function I have that works with 1 entry field.

    def limitMuntgeld(self, *args):
        value = self.invoerM.get()
        if len(value) > 5:
            self.invoerM.set(value[:5])
        if value.lower() in "abcdefghijklmnopqrstuvwxyz-=[];/":
            self.invoerM.set(value[:0])

This is the example entry field code that works with the function

self.invoerMuntgeld = Entry(self, font=('Arial', 14), textvariable=self.invoerM)

This is combined with a trace on the entry field posted below.

self.invoerM = StringVar()
self.invoerM.trace('w', self.limitMuntgeld)

I have also tried it with vcmd and validatecommand. However, no good results. My endresult would be one function working with all entry fields. If anyone has any suggestions, I am all ears!


原文:https://stackoverflow.com/questions/49068813
更新时间:2023-07-13 14:07

最满意答案

检查一下。 我改变了var content = []; to var content = {};

$(document).on('click', '#guardarBtn', function (event) {
   var content= {};
    $('.rowUpdate').each(function (i) {

        $(this).find('td').each(function (j, v) {
            if (j != 0) {

                var input = $("input", this),
                    name = input.attr("name").substring(0, input.attr("name").length),
                    value = input.val();
                
                    content[name] = value;
            
               // alert(JSON.stringify(content));
            }
        });
       alert(JSON.stringify(content));
       // rows.push(content);
    });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
    <tr  class="rowUpdate">
        <td>Corredor Feed</td>
        <td>Id Corrdor
            <input type="text" value="" class="validate" name="idcorreo">
        </td>
        <td>Nombre
            <input type="text" value="" class="validate" name="nombre">
        </td>
        <td>Email
            <input type="text" value="foo@bar.com" class="validate" name="email">
        </td>
        <td>Empressa
            <input type="text" value="" class="validate" name="Empressa">
        </td>
        <td>Pagina Web
            <input type="text" value="" class="validate" name="paginaWeb">
        </td>
        <td>Telefono
            <input type="text" value="" class="validate" name="telephon">
        </td>
        <td>Cellular
            <input type="text" value="" class="validate" name="cellular" />
        </td>
        <td>

            <input type="submit" id="guardarBtn" value="Save" name="submitme">
        </td>
    </tr>
</table>


Check this one. I changed var content= []; to var content= {};

$(document).on('click', '#guardarBtn', function (event) {
   var content= {};
    $('.rowUpdate').each(function (i) {

        $(this).find('td').each(function (j, v) {
            if (j != 0) {

                var input = $("input", this),
                    name = input.attr("name").substring(0, input.attr("name").length),
                    value = input.val();
                
                    content[name] = value;
            
               // alert(JSON.stringify(content));
            }
        });
       alert(JSON.stringify(content));
       // rows.push(content);
    });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
    <tr  class="rowUpdate">
        <td>Corredor Feed</td>
        <td>Id Corrdor
            <input type="text" value="" class="validate" name="idcorreo">
        </td>
        <td>Nombre
            <input type="text" value="" class="validate" name="nombre">
        </td>
        <td>Email
            <input type="text" value="foo@bar.com" class="validate" name="email">
        </td>
        <td>Empressa
            <input type="text" value="" class="validate" name="Empressa">
        </td>
        <td>Pagina Web
            <input type="text" value="" class="validate" name="paginaWeb">
        </td>
        <td>Telefono
            <input type="text" value="" class="validate" name="telephon">
        </td>
        <td>Cellular
            <input type="text" value="" class="validate" name="cellular" />
        </td>
        <td>

            <input type="submit" id="guardarBtn" value="Save" name="submitme">
        </td>
    </tr>
</table>

相关问答

更多

相关文章

更多

最新问答

更多
  • 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
  • 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
  • OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
  • 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
  • codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
  • 在计算机拍照在哪里进入
  • 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
  • No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
  • 单页应用程序:页面重新加载(Single Page Application: page reload)
  • 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
  • System.StackOverflow错误(System.StackOverflow error)
  • KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
  • 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
  • android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
  • TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
  • 企业安全培训的各项内容
  • 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
  • C#类名中允许哪些字符?(What characters are allowed in C# class name?)
  • NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
  • 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
  • 将多个行和可变行移动到列(moving multiple and variable rows to columns)
  • 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
  • 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
  • Angular $资源不会改变方法(Angular $resource doesn't change method)
  • 在Angular 5中不是一个函数(is not a function in Angular 5)
  • 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
  • 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
  • 常见的python rpc和cli接口(Common python rpc and cli interface)
  • Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
  • 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)