2012-12-13 11 views
5

जब मैं बटन पर क्लिक करता हूं तो मैं कई फ़ंक्शन चलाने के लिए चाहता हूं। उदाहरण के लिए मैं अपने बटन की तरहबटन दबाए जाने पर कई कमांड हैं

self.testButton = Button(self, text = "test", 
         command = func1(), command = func2()) 

देखने के लिए जब मैं इस बयान मैं कोई त्रुटि मिलती है पर अमल क्योंकि मैं दो बार एक बहस के लिए कुछ आवंटित नहीं कर सकता चाहते हैं। मैं कमांड को कई फ़ंक्शन निष्पादित कैसे कर सकता हूं।

उत्तर

17

आप कार्यों के संयोजन के लिए एक सामान्य समारोह बना सकते हैं, यह कुछ इस तरह दिख सकता है:

def combine_funcs(*funcs): 
    def combined_func(*args, **kwargs): 
     for f in funcs: 
      f(*args, **kwargs) 
    return combined_func 

तो फिर तुम इस तरह अपने बटन बना सकते हैं:

self.testButton = Button(self, text = "test", 
         command = combine_funcs(func1, func2)) 
10
def func1(evt=None): 
    do_something1() 
    do_something2() 
    ... 

self.testButton = Button(self, text = "test", 
         command = func1) 

शायद?

मैं शायद लगता है कि आप की तरह

self.testButton = Button(self, text = "test", 
         command = lambda x:func1() & func2()) 

लेकिन वह वास्तव में सकल है कुछ कर सकते हैं ...

+1

एक समारोह निर्धारित करने से आप क्या चाहते करने के लिए शायद सबसे अच्छा है उपाय। बटन के भीतर कुछ तर्क डालने से मुझे खुद को icky, और संभावित रखरखाव समस्या के रूप में हमला किया जाता है। – PeterBB

1

आप इस के लिए लैम्ब्डा उपयोग कर सकते हैं:

self.testButton = Button(self, text = "test", lambda: [f() for f in [func1, funct2]]) 
2

आप बस इस तरह लैम्ब्डा उपयोग कर सकते हैं:

self.testButton = Button(self, text=" test", command=lambda:[funct1(),funct2()]) 
0

Button(self, text="text", command=func_1()and func_2)

+4

हालांकि यह कोड प्रश्न का उत्तर दे सकता है, इस सवाल का जवाब देने के तरीके के बारे में अतिरिक्त संदर्भ प्रदान करना और/या कैसे यह दीर्घकालिक मूल्य में सुधार करता है। – adiga

संबंधित मुद्दे