相关疑难解决方法(0)

为什么Python lambdas有用?

我想弄清楚Python lambdas.lambda是现实生活中应该被遗忘的"有趣"语言项目之一吗?

我确信有一些可能需要它的边缘情况,但考虑到它的模糊性,它在未来版本中重新定义的可能性(我基于它的各种定义的假设)和降低的编码清晰度 - 应该是要避免吗?

这让我想起C类型的溢出(缓冲区溢出) - 指向顶部变量并重载以设置其他字段值.感觉就像是一种技术表演,但维护编码器的噩梦.

python lambda closures function

903
推荐指数
22
解决办法
54万
查看次数

657
推荐指数
15
解决办法
33万
查看次数

如何将参数传递给Tkinter中的Button命令?

假设我Button在Python中使用Tkinter进行了以下操作:

import Tkinter as Tk
win = Tk.Toplevel()
frame = Tk.Frame(master=win).grid(row=1, column=1)
button = Tk.Button(master=frame, text='press', command=action)
Run Code Online (Sandbox Code Playgroud)

action当我按下按钮时调用该方法,但是如果我想将一些参数传递给方法action怎么办?

我尝试过以下代码:

button = Tk.Button(master=frame, text='press', command=action(someNumber))
Run Code Online (Sandbox Code Playgroud)

这只是立即调用方法,按下按钮什么都不做.

python arguments tkinter button python-3.x

143
推荐指数
7
解决办法
22万
查看次数

Python参数绑定器

如何将参数绑定到Python方法以存储一个用于以后调用的nullary仿函数?与C++类似boost::bind.

例如:

def add(x, y):
    return x + y

add_5 = magic_function(add, 5)
assert add_5(3) == 8
Run Code Online (Sandbox Code Playgroud)

python partial-application

60
推荐指数
5
解决办法
2万
查看次数

Tkinter使用lambda循环分配按钮命令

我正在尝试创建一些按钮(带有for),如下所示:

def a(self, name):
    print name

users = {"Test":"127.0.0.0", "Test2":"128.0.0.0"}
row = 1
for name in users:
    user_button = Tkinter.Button(self.root,
                                 text=name,
                                 command=lambda: self.a(name))
    user_button.grid(row = row, column = 0)
    row+=1
Run Code Online (Sandbox Code Playgroud)

并且每个按钮都有自己的参数(Test getting Test和Test2得到Test2)但是当我按下按钮时它们都打印"Test2",这意味着它们使用相同的功能和相同的参数.

我怎么解决这个问题?

python lambda loops tkinter button

26
推荐指数
1
解决办法
1万
查看次数

Tkinter按钮命令在运行程序时激活?

我正在尝试制作一个构建检索表单,并且似乎有按钮的问题......我是Python/tkinter GUI编程(以及一般的GUI编程)的新手,并借用了Hello World应用程序的框架,并且sorta建立了这个.

在下面的代码中,我设置了Browse按钮的"command"选项,在单击时调用我的类的内部get_dir()函数.但是,只要我尝试运行应用程序,就会调用get_dir()函数,并提示我选择一个目录.任何想法为什么会发生这种情况,以及我能做些什么才能使其表现正常?

from Tkinter import *
import tkFont
from tkFileDialog import askdirectory

class App:

    def __init__(self, master):

        fontHead = tkFont.Font(family="Arial", size=10, weight=tkFont.BOLD)
        fontBold = tkFont.Font(family="Arial", size=8, weight=tkFont.BOLD)
        fontReg =  tkFont.Font(family="Arial", size=8)

        frameN = Frame(master)
        frameN.grid(row=0,padx=5,pady=5)

        frameXBH = Frame(frameN)
        frameXBH.grid(row=0,columnspan=5,padx=5)

        Canvas(frameXBH,borderwidth=0,relief="flat",height=1,width=20,background="#cccccc").grid(row=0)
        Label(frameXBH, text="Xbox 360",font=fontBold,width=9).grid(row=0,column=1)
        Canvas(frameXBH,borderwidth=0,relief="flat",height=1,width=440,background="#cccccc").grid(row=0,column=2,sticky="WE")

        Label(frameN, text="Destination Path:",font=fontReg).grid(row=1,sticky="W")
        xbPath = Entry(frameN,width=30,font=fontReg)
        xbPath.grid(row=1,column=1,sticky="W")
        xbBrowse = Button(frameN,text="Browse...",font=fontReg,command=self.get_dir(xbPath))
        xbBrowse.grid(row=1,column=2,sticky="W")
        xbRel = Checkbutton(frameN,text="Release",font=fontReg)
        xbRel.grid(row=1,column=3,sticky="W")
        xbShip = Checkbutton(frameN,text="Ship",font=fontReg)
        xbShip.grid(row=1,column=4,sticky="W")

        Canvas(frameN,borderwidth=1,relief="groove",width=550,height=0).grid(row=2,columnspan=5,pady=10)

        # SAVE AND CANCEL

        btnSave = Button(frameN,text="Save",width=10)
        btnSave.grid(row=3,column=3,sticky="E")

        btnCancel = Button(frameN,text="Cancel",width=10)
        btnCancel.grid(row=3,column=4,sticky="W")

    def get_dir(self,box): …
Run Code Online (Sandbox Code Playgroud)

python user-interface tkinter

17
推荐指数
3
解决办法
3万
查看次数

为什么在声明时执行Button参数"command"?

我是Python新手并试图用tkinter编写程序.为什么下面的Hello函数被执行了?据我了解,回调只会在按下按钮时执行?我很迷茫...

>>> def Hello():
        print("Hi there!")

>>> hi=Button(frame,text="Hello",command=Hello())
Hi there!
>>> 
Run Code Online (Sandbox Code Playgroud)

python tkinter callback

15
推荐指数
1
解决办法
2万
查看次数

需要 1 个位置参数,但给出了 2 个

我想运行一个命令行工具以在单独的函数中运行并传递给按钮单击此程序的附加命令,但每次我都将其作为响应。

需要 1 个位置参数,但给出了 2 个

from tkinter import *
import subprocess


class StdoutRedirector(object):
    def __init__(self,text_widget):
        self.text_space = text_widget

    def write(self,string):
        self.text_space.insert('end', string)
        self.text_space.see('end')

class CoreGUI(object):
    def __init__(self,parent):
        self.parent = parent
        self.InitUI()

        button = Button(self.parent, text="Check Device", command= self.adb("devices"))
        button.grid(column=0, row=0, columnspan=1)

    def InitUI(self):
        self.text_box = Text(self.parent, wrap='word', height = 6, width=50)
        self.text_box.grid(column=0, row=10, columnspan = 2, sticky='NSWE', padx=5, pady=5)
        sys.stdout = StdoutRedirector(self.text_box)

    def adb(self, **args):
        process = subprocess.Popen(['adb.exe', args], stdout=subprocess.PIPE, shell=True)
        print(process.communicate())
        #return x.communicate(stdout)


root = Tk()
gui = …
Run Code Online (Sandbox Code Playgroud)

python subprocess tkinter popen python-3.x

6
推荐指数
1
解决办法
7万
查看次数

使用"浏览"按钮显示Tkinter中文件的路径 - Python

我一直在阅读有关Tkinter中浏览按钮问题的几篇帖子,但我找不到答案.

所以我编写了这段代码,以便在单击"浏览"按钮时获取目录路径,并在输入字段中显示此路径.它的部分内容是:当我运行脚本时,会直接弹出一个文件浏览器窗口.我确实在输入字段中获取了路径但是如果我想要使用我的浏览按钮更改文件夹它不起作用.

我不想让浏览器从一开始就弹出,但只有当我点击浏览时!谢谢你的回答

from Tkinter import *
from tkFileDialog import askdirectory

window = Tk() # user input window

MyText= StringVar()

def DisplayDir(Var):
    feedback = askdirectory()
    Var.set(feedback)

Button(window, text='Browse', command=DisplayDir(MyText)).pack()
Entry(window, textvariable = MyText).pack()
Button(window, text='OK', command=window.destroy).pack()

mainloop()
Run Code Online (Sandbox Code Playgroud)

python directory tkinter button file-browser

4
推荐指数
1
解决办法
2万
查看次数

自动调用Button命令

出于某种原因,此按钮在bot_analysis_frame没有按下按钮的情况下自动调用.我猜它是因为这command是一个带参数的函数.

有没有办法让按钮只调用此函数并在按下时传递所需的变量?

Button(topAnalysisFrame, text='OK', command=bot_analysis_frame(eventConditionL, eventBreakL)).pack(side=LEFT)
Run Code Online (Sandbox Code Playgroud)

python tkinter

3
推荐指数
1
解决办法
6006
查看次数