2012-02-17 16 views
7

में जोड़ने में असमर्थ जब भी मैं अपने पायथन दुभाषिया में निम्न का प्रयास करता हूं। मैं कमांड लाइन करने के लिए शब्द हैलो नकल करने में सक्षम हूँ, मैं दुभाषियाक्लिपबोर्ड

from Tkinter import Tk 
r = Tk() 
r.clipboard_append(" hello ") 

हालांकि बंद अगर मैं एक फ़ाइल बुलाया test.py में यह रखा और फिर

python test.py 

इस कोशिश के बाद भी काम नहीं करेगा, मैं सिस्टम क्लिपबोर्ड

को यह संलग्न नहीं कर सकते किसी भी एक को पता क्यों नहीं या पता एक स्क्रिप्ट में और दुभाषिया में इसे चलाने के बीच क्या अंतर का कारण होता है

+0

यदि आप दुभाषिया को छोड़ रहे हैं तो यह केवल (पहले मामले के लिए) के कारण है। एक बार पाइथन चलता है और अपने स्वयं को साफ कर देता है तो यह क्लिपबोर्ड में क्या होगा। – dennmat

+0

जैसा कि मैंने प्रश्न में निर्दिष्ट किया है, मैं दुभाषिया को बंद करता हूं और यह अभी भी इसे क्लिपबोर्ड पर कॉपी करता है। – samirahmed

+1

उस भाग को याद किया, हालांकि आपको क्लिपबोर्ड_क्लर को पहले भी कॉल करना चाहिए ताकि यह सुनिश्चित किया जा सके कि वहां कुछ भी गंदा नहीं है। हालांकि मुझे यकीन नहीं है कि यह दोनों के बीच अलग क्यों होगा क्योंकि वे वास्तव में एक ही चीज़ हैं। उम्मीद है कि किसी के पास आपके लिए जवाब है। – dennmat

उत्तर

4

स्पष्ट रूप से यह तब तक काम नहीं करेगा जब तक कि टिंकर अपने मुख्य लूप में न हो। यह मेरे सिस्टम पर काम करता है:

from Tkinter import * 
r = Tk() 
r.clipboard_append("hello") 
r.mainloop() 
+2

'r.update() 'भी पर्याप्त है, अगर आप मेनलोप नहीं चाहते हैं। –

+0

क्या होगा यदि मैं मुख्य मेनॉप नहीं चाहता हूं? मैं चाहता हूं कि मेरा कार्यक्रम इसके बाद समाप्त हो जाए। 'r.update()' मदद नहीं करता है। वर्कअराउंड के रूप में टाइमआउट का उपयोग करके (नीचे देखें) काम करता है – Blauhirn

2

मुझे व्यवहार में यह अंतर भी दिखाई देता है। क्लिपबोर्ड पर टेक्स्ट रखने के लिए सुझाए गए टिंकर समाधान कमांड लाइन के माध्यम से ठीक काम करता है, लेकिन प्रोग्राम में इस्तेमाल होने पर क्लिपबोर्ड खाली छोड़ देता है। प्रोग्राम के अंत में mainloop() का उपयोग करना है, लेकिन इसका मतलब है कि प्रोग्राम समाप्त नहीं होगा, और r.update() का उपयोग करने में मदद नहीं मिलती है।

नोट: यदि कार्यक्रम समाप्त होने से पहले क्लिपबोर्ड को दूसरे एप्लिकेशन पर चिपकाया जाता है (कार्यक्रम को उपयोगकर्ता इनपुट के लिए प्रतीक्षा में अंत में लटकाकर), तो प्रोग्राम समाप्त होने के बाद भी टिंकर समाधान ठीक काम करता है। लेकिन अगर क्लिपबोर्ड दूसरे प्रोग्राम पर चिपकाए जाने से पहले प्रोग्राम समाप्त होता है, तो क्लिपबोर्ड खाली हो जाता है।

1

deel की तरह, पैट्रिक टी Neslon और दूसरों के सुझाव का उपयोग करें:

from Tkinter import * 
r = Tk() 
r.clipboard_append("hello") 
r.mainloop() 

एक गैर जीयूआई आवेदन में काम नहीं किया (अद्यतन या तो काम नहीं किया) (विन 7/64, अजगर 2.7.10/32)। यह काम करता है, हालांकि यह एक हैक, https://bugs.python.org/issue23760 से प्रेरित लगता है:

from Tkinter import * 
r = Tk() 
r.clipboard_clear() 
r.clipboard_append("hello") 
r.after(500, tk.destroy) 
r.mainloop() 

100 एमएस आमतौर पर अपने सिस्टम पर काम किया तो एक उपयोगिता के लिए 500. यह साथ चला गया है कि मैं का उपयोग किया जाएगा, कुछ नहीं मैं करना चाहते हैं बहुत व्यापक रूप से वितरित करें जब तक कि अधिक अनुभव वाला कोई व्यक्ति अपने विश्वसनीय ...

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