关于Python Tkinter Button控件command传参问题的解决方式

环境:Ubuntu14、Python3.4、Pycharm2018

一、使用command=lambda: 的形式传参

代码如下

from tkinter import *
import tkinter.messagebox as messagebox

def createpage(master):
  master = Frame(root)
  master.pack()
  Label(master, text='num1').grid(row=0, column=0, stick=W, pady=10)
  e1 = Entry(master)
  e1.grid(row=0, column=1, stick=E)
  Label(master, text='num2').grid(row=1, column=0, stick=W, pady=10)
  e2 = Entry(master)
  e2.grid(row=1, column=1, stick=E)
  # Button传递参数
  Button(
    master, text='加', command=lambda: btn_def(e1.get(), e2.get())
  ).grid(row=2, column=0, stick=W)
  Button(master, text='减').grid(row=2, column=1, stick=E)
  Label(master, text='说明').grid(row=3, column=0, stick=W, pady=10)
  Label(master, text='只写了加法(请输入简单数字测试button传参)').grid(
    row=3, column=1, stick=E
  )

def btn_def(num1, num2):
  num = int(num1) + int(num2)
  messagebox.showinfo('结果', '%d' % num)

if __name__ == '__main__':
  root = Tk()
  root.title('Demo')
  root.geometry('400x150')
  createpage(root)
  root.mainloop()

二、使用StringVar()和Entry textvariable对参数进行绑定

代码如下

from tkinter import *
import tkinter.messagebox as messagebox

class A:
  """
  使用StringVar() 和 textvariable
  对Button进行绑定
  实现Button对数据进行操作
  解决Button传参问题
  StringVar()的数需要使用.get()获取值
  """
  def __init__(self, master):
    self.root = Frame(master)
    self.num1 = StringVar() # 第一个数字
    self.num2 = StringVar() # 第一个数字
    self.createpage()

  def createpage(self):
    self.root.pack()
    Label(self.root, text='num1').grid(row=0, column=0, stick=W, pady=10)
    # textvariable和StringVar的num1绑定
    Entry(self.root, textvariable=self.num1).grid(row=0, column=1, stick=E)
    Label(self.root, text='num2').grid(row=1, column=0, stick=W, pady=10)
    # textvariable和StringVar的num2绑定
    Entry(self.root, textvariable=self.num2).grid(row=1, column=1, stick=E)
    # Button传递参数
    Button(
      self.root, text='加', command=self.btn_def
    ).grid(row=2, column=0, stick=W)
    Button(self.root, text='减').grid(row=2, column=1, stick=E)
    Label(self.root, text='说明').grid(row=3, column=0, stick=W, pady=10)
    Label(self.root, text='只写了加法(请输入简单数字测试button传参)').grid(
      row=3, column=1, stick=E
    )

  def btn_def(self):
    # 使用.get()获取值
    num = int(self.num1.get()) + int(self.num2.get())
    messagebox.showinfo('结果', '%d' % num)

if __name__ == '__main__':
  root = Tk()
  root.title('Demo2')
  root.geometry('400x150')
  A(root)
  root.mainloop()

三、总结

以上两种方式都是使用了Button进行数据事件处理,方法一为Button command下传递参数,方法二为控件下使用textvariable对StringVar的参数进行绑定。(我比较推荐使用方法二)。好了,今天就说到这吧,希望大家多多支持我们!

(0)

相关推荐

  • python tkinter之顶层菜单、弹出菜单实例

    我就废话不多说了,直接看代码吧! from tkinter import * def sys_callbak():       pass def fun_callbak():       pass def no_thing(event):       popmenu.post(event.x_root,event.y_root) master = Tk() master.title('新闻自动抓取') menubar = Menu(master) sysmenu = Menu(menubar,t

  • Python tkinter布局与按钮间距设置方式

    新建label与button,并设置位置(grid) import tkinter as tk root = tk.Tk() label = tk.Label(root, text = 'Label') label.grid(column = 3, row = 8) button = tk.Button(root, text = 'Button') button.grid(column = 5, row = 1) 按钮间距设置 col_count, row_count = root.grid_s

  • Python Tkinter Entry和Text的添加与使用详解

    输入框和消息显示框是常用的GUI界面部件,其中输入框的重要任务就是返回一个输入的字符串,而消息显示框则要显示指定的信息. 功能:输入一个密码,如果密码正确则显示confirm,不正确则显示sorry __author__ = 'freedom' from Tkinter import * class App(Frame): def __init__(self,master): frame = Frame(master) frame.grid() self.ent = Entry(frame,sh

  • Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例

    我就废话不多说了.大家直接看代码吧! #!/usr/bin/env python #coding=utf-8 ''' 窗口屏幕居中,设置窗口最大,最小尺寸... 版权所有 2014 yao_yu (http://blog.csdn.net/yao_yu_126) 本代码以MIT许可协议发布 2014-04-15 创建 ''' import tkinter as tk from tkinter import ttk def get_screen_size(window): return windo

  • python tkinter 设置窗口大小不可缩放实例

    解决方法 将窗口最大尺寸和最小尺寸设置为一样即可 top = Tk() # 创建顶级窗口 top.minsize(560, 545) # 最小尺寸 top.maxsize(560, 545) # 最大尺寸 top.mainloop() 补充知识:tkinter改变下拉列表(Combobox)的选项值 定义下拉列表: # 此处省略父容器的定义 ... # 定义下拉列表选项值集合 self.Combo5List = ['0', '1', '2', '3'] # 定义下拉列表Combobox self

  • python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例

    注意主窗口一定要为tk.Tk(),在主窗口上通过button的点击相应子函数创建子窗口,注意此时创建出来的窗口必须是Toplevel,否则出错. 至于用图片在窗口上绘图,则按代码所示即可. # -*- coding: utf-8 -*- """ Created on Wed Oct 26 20:32:52 2016 @author: min """ import Tkinter as tk from PIL import Image, Image

  • python tkinter之 复选、文本、下拉的实现

    我就废话不多说了,直接看代码吧! import tkinter as tk from tkinter import ttk win = tk.Tk() win.title("Python GUI") # 添加标题 ttk.Label(win, text="Chooes a number").grid(column=1, row=0) # 添加一个标签0 ttk.Label(win, text="Enter a name:").grid(colum

  • Python tkinter 下拉日历控件代码

    tkinter 下拉日历控件 网上找的不完善的Tk日历进行修改的,可以快捷的找到并返回日期. 效果如下图,上面的是控件,下面的是调用demo窗口 如下所示: # -*- coding: utf-8 -*- import calendar import tkinter as tk import tkinter.font as tkFont from tkinter import ttk datetime = calendar.datetime.datetime timedelta = calend

  • 在python tkinter界面中添加按钮的实例

    tkinter是python自带的GUI库,可以实现简单的GUI交互,该例子添加了五种不同效果的Button,如图: from tkinter import * from tkinter import messagebox #python3.0的messagebox,属于tkinter的一个组件 top = Tk() top.title("button test") def callback(): messagebox.showinfo("Python command&quo

  • 关于Python Tkinter Button控件command传参问题的解决方式

    环境:Ubuntu14.Python3.4.Pycharm2018 一.使用command=lambda: 的形式传参 代码如下 from tkinter import * import tkinter.messagebox as messagebox def createpage(master): master = Frame(root) master.pack() Label(master, text='num1').grid(row=0, column=0, stick=W, pady=1

  • Python Tkinter对话框控件使用详解

    目录 文件选择对话框 颜色选择对话框 消息对话框 除了基本的控件之外,Tkinter 还提供了三种对话框控件: 文件选择对话框:filedailog 颜色选择对话框:colorchooser 消息对话框:messagebox 这些对话框的使用能够在一定程度上增强用户的交互体验,下面对这些对话框控件进行详细地介绍. 文件选择对话框 文件对话框在 GUI 程序中经常的使用到,比如上传文档需要从本地选择一个文件,包括文件的打开和保存功能都需要一个文件对话框来实现.Tkinter 提供文件对话框被封装在

  • Python Tkinter基础控件用法

    本文实例展示了Python Tkinter基础控件的用法,分享给大家供大家参考之用.具体方法如下: # -*- coding: utf-8 -*- from Tkinter import * def btn_click(): b2['text'] = 'clicked' evalue = e.get() print 'btn Click and Entry value is %s' % evalue def btn_click_bind(event): print 'enter b2' def

  • Python tkinter分隔控件(Seperator)的使用

    分隔控件的作用就是把控件分隔为几个部分.分隔控件有2两种:水平(HORIZONTAL )或者垂直(VERTICAL ).如果是使用grid布局管理器,需要使用sticky来拉伸分隔控件,否则可能只是窄窄的一条线.如果是使用pack布局管理器,使用使用fill来拉伸控件. 分隔控件的属性有: (1)class_ 分隔控件的名字. (2)Orient 分隔控件的方向.有水平和垂直两个方向. import tkinter as tk from tkinter import ttk root = tk.

  • Python Tkinter Menu控件使用详解

    目录 创建主目录菜单 创建下拉菜单 创建弹出菜单栏 菜单按钮控件 Menu 控件(菜单控件)可以说是 GUI 中“精髓所在”,它以可视化的方式将一系列的命令进行分组,在每一个分组下又可以“隐藏”许多的程序执行命令(即功能).当打开菜单时,这些命令就会“显式”的呈现出来,方便用户进行选择,比如 Windows 系统中记事本文件(.txt文件类型)的界面: 图1:Menu菜单界面 通过使用菜单控件(Menu)可以充分地节省有限的窗口区域,让我们的界面更加简洁优雅,避免臃肿.混乱. Tkinter M

  • python tkinter Entry控件的焦点移动操作

    话不多说. 代码片: # -*- coding: utf8 -*- from tkinter import * ##################################### ###--------------tk---------------- class App: def __init__(self,master): frame = Frame(master) frame.pack(expand=1) self.e1 = Entry(frame) self.e1.pack() s

  • asp.net fileupload控件上传文件与多文件上传

    1.前台文件 Default.aspx: <%@ Page Language="C#" AutoEventWireup="true"CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.

  • JavaScript判断FileUpload控件上传文件类型

    为了代码变得更加简捷,笔者使用了正则表达式来获取文件扩展名,如果读者对正则表达式不太了解或者从来没有接触过,请马上恶补一下吧!毕竟它非常重要,大多数的编程语言都支持正则表达式. 大家都知道,后台获取FileUpload扩展名方法: string ext = Path.GetExtension(fu.PostedFile.FileName); JS判断FileUpload控件上传文件的扩展名: <html xmlns="http://www.w3.org/1999/xhtml"&g

  • ASP.NET自定义Web服务器控件之Button控件

    本文实例讲述了ASP.NET自定义Web服务器控件之Button控件实现方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: using System;  using System.Collections.Generic;  using System.ComponentModel;  using System.Linq;  using System.Text;  using System.Web;  using System.Web.UI;  using System.Web.U

  • Android编程之Button控件用法实例分析

    本文实例讲述了Android编程之Button控件用法.分享给大家供大家参考,具体如下: 一.Button概述 android.widget.Button直接继承于android.wdiget.TextView. 直接子类有:CompoundButton. 间接子类有:CheckBox,RadioButton,Switch,ToggleButton. Button类表示一个"按钮"控件."按钮"控件可以被用户按下或者点击,来触发另一个操作. 二.Button的用法

随机推荐