我正在尝试制作一个构建检索表单,并且似乎有按钮的问题......我是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) 前几天我写了一个类似于以下内容的lambda:
fetch = lambda x: myDictionaryVariable.get(x, "")
Run Code Online (Sandbox Code Playgroud)
但是现在我刚刚学会了这一点,你可以用一个;而不是换行来分隔python语句,然后学会了即使用冒号也可以在1行上做简单的语句.所以我意识到我也可以这样写:
def fetch(x): return myDictionaryVariable.get(x, "")
Run Code Online (Sandbox Code Playgroud)
不是我在;这里使用,但如果我需要,我可以为我的1行功能提供更多功能.我可以写:
def strangeFetch(x): y = "unicorn"; return menu.get(x, y)
Run Code Online (Sandbox Code Playgroud)
那么为什么我需要lambdas呢?为什么他们甚至是python的一部分?鉴于此,他们添加了什么?
我经常处理格式不正确的数据(即数字字段不一致等)
可能还有其他方法,我不知道,但我在数据框中格式化单个列的方式是使用函数并将列映射到该函数.
format = df.column_name.map(format_number)
Run Code Online (Sandbox Code Playgroud)
问题:1 - 如果我有一个包含50列的数据框,并希望将该格式应用于多列,等等,如第1,3,5,7,9列,该怎么办?
你可以去吗:
format = df.1,3,5,9.map(format_number)
Run Code Online (Sandbox Code Playgroud)
..这样我可以在一行中格式化我的所有数字列?
我刚刚开始学习长期听到的python语言.我之前一直在和C合作.我发现python,因为现代脚本语言在各种任务上都非常简洁.
所以我想知道,如果我有一个列表foo = [1, 2, 3, 4, 5],我想从中挑出所有奇数bar.在C中,我可能会使用循环并检查每个数字foo并复制所需的元素bar.你们这些"蟒蛇式"的做法是什么?
功能究竟发生了什么:
lambda x: 10 if x == 6 else 1
Run Code Online (Sandbox Code Playgroud)
我知道一些lambda函数做了什么,但我不习惯看到它们像这样写.我是任何形式的代码的菜鸟.
如果这是其他地方的问题,我很抱歉.通过谷歌和Stackforum搜索我没有找到任何可以推断出答案的内容; 但我觉得那部分就是我.
我正在尝试将lambdas作为一个概念,作为其中的一部分,我正在寻找使用它的方法.
所以,如果从功能的角度来看这是一个非常愚蠢的关于lambda的事情,请随时让我知道并解释.但无论哪种方式,我仍然想知道答案/仍然想知道如何用python语言做到这一点.
因此,出于测试目的,我有:
my_test = 'test_name'
testlist = ['test_name', 'test_name_dup', 'test_name_dup_1', 'test_name_dup_3']
Run Code Online (Sandbox Code Playgroud)
我正在寻找使用lambda创建一个循环的函数,并返回不在testlist中的第一个test_name_#.该功能最终将应用于文件名,但出于测试目的,我不得不远离实际读取文件名 - 给了我太多方法来搞砸了.
但my_test必须能够更改,测试列表将是文件路径列表.
所以,我正在寻找一个像以下的功能:
new_name = lambda x: my_test + '_' + str(x)
Run Code Online (Sandbox Code Playgroud)
但是初始值应该是x = 1,并且它应该继续,直到new_name不在testlist中.似乎:
bool(new_name not in testlist)
Run Code Online (Sandbox Code Playgroud)
可能是有用的东西.
但我无法想出一种方法将初始x设置为1,并使用(x + 1)循环直到bool为真.
我知道这是可能的,因为我发现一些CRAZY lambda示例循环遍历文件中的行.我只是无法理解它们(并且没有任何方式可以与它们一起玩,因为它们处理的是编程级别之外的事情.
在相关的说明中,我可以在此循环的开头添加值吗?(即我可以检查test_name,然后检查test_name_dup,然后检查test_name_dup_#)?
在此先感谢您的帮助!Lambdas(虽然非常酷)完全弄乱了我的脑袋.
我是 Python 新手,我正在尝试使用 Tkinter 制作一个简单的应用程序。
def appear(x):
return lambda: results.insert(END, x)
letters=["A", "T", "D", "M", "E", "A", "S", "R", "M"]
for index in range(9):
n=letters[index]
nButton = Button(buttons, bg="White", text=n, width=5, height=1,
command =appear(n), relief=GROOVE).grid(padx=2, pady=2, row=index%3,
column=index/3)
Run Code Online (Sandbox Code Playgroud)
我想要做的是一旦我点击它们就禁用它们。我试过
def appear(x):
nButton.config(state="disabled")
return lambda: results.insert(END, x)
Run Code Online (Sandbox Code Playgroud)
但它给了我以下错误:
NameError:未定义全局名称“nButton”
我正在尝试对列表进行排序,将所有0移到列表的末尾.示例:[0,1,0,2,3,0,4] - > [1,2,3,4,0,0,0]
我看到有人在一行编码
list.sort(cmp=lambda a,b:-1 if b==0 else 0)
Run Code Online (Sandbox Code Playgroud)
但我不明白括号内的意思.
有谁能告诉我?谢谢.
我不明白这个语法是如何工作的,也找不到关于它的文档:
word = '123xyz567'
s = ''.join (c if c.isdigit() else ' 'for c in word)
Run Code Online (Sandbox Code Playgroud)
代码的第 2 行将采用 xyz123 并"123 567"通过传入一个要连接的 lambda 函数将它们连接成一个字符串
但是,我对这种语法的工作方式感到困惑,通常是一个 python if-else 语句:
def example():
for c in word:
if c.isdigit():
return c
else:
return ' '
Run Code Online (Sandbox Code Playgroud)
有人可以解释或指导我查看向我解释传入的 lambda 函数的语法结构.join()以及我如何正确使用它的文档吗?