2014-10-12 8 views
8

मैं क्लिपबोर्ड में अपनी छोटी लिपियों के परिणाम देने के लिए निम्न कोड का उपयोग करता हूं।विंडोज़ पर पायथन 3.4 में टिंकर विंडोज क्लिपबोर्ड पर बाहरी क्लिपबोर्ड डेटा पोस्ट नहीं करते हैं

from tkinter import Tk 
r = Tk() 
r.withdraw() 
r.clipboard_clear() 
r.clipboard_append("Result") 

यह पायथन संस्करण 3.3.5 और इससे पहले ठीक काम करता है। लेकिन जब मैं पायथन 3.4 में अपग्रेड करता हूं तो इसे खाली क्लिपबोर्ड प्राप्त होता था। मैंने 3.4.0, 3.4.1 और 3.4.2 की कोशिश की और सभी को एक परिणाम मिला (खाली क्लिपबोर्ड)। यदि मैं स्क्रिप्ट को तत्काल बाहर निकलने से रोकता हूं, input()clipboard_append() के बाद, मुझे लगता है कि क्लिपबोर्ड में सही "परिणाम" है।

Update1:

संशोधित परीक्षण स्क्रिप्ट से पता चलता है कि समस्या एक समय मुद्दा नहीं है:

from tkinter import Tk 
r = Tk() 
r.withdraw() 
r.clipboard_clear() 
r.clipboard_append("Result") 
input() 
r.destroy() 

अगर मैं इस स्क्रिप्ट को चलाने, कुछ सेकंड प्रतीक्षा करें, प्रेस दर्ज करें, मैं खाली प्राप्त क्लिपबोर्ड।

यदि मैं स्क्रिप्ट चलाता हूं, तो किसी भी अन्य विंडो पर स्विच करें और Ctrl + V दबाएं, मुझे स्क्रिप्ट निकलने के बाद क्लिपबोर्ड में "परिणाम" और "परिणाम" रहता है।

मुझे लगता है कि टीसीएल/टीके 8.6 clipboard_clear() सिस्टम क्लिपबोर्ड को प्रभावित करता है, लेकिन clipboard_append केवल आंतरिक टीसीएल/टीके क्लिपबोर्ड को प्रभावित करता है जो केवल ओएस अनुरोध द्वारा सिस्टम क्लिपबोर्ड में स्थानांतरित होता है। ऐसा लगता है कि यह लिनक्स में किया गया था, जिसमें सिस्टम क्लिपबोर्ड नहीं है।

Update2:

Tk changelog में अंतिम उल्लेख क्लिपबोर्ड 2004 तक संदर्भित करता है:

2004-05-03 (bug fix)[939389, 822002, 732662] Correctly post internal 
clipboard data to the Windows clipboard on exit. (hobbs) 

ऐसा लगता है कि 2004 में ठीक किया त्रुटि हमें 10 साल बाद लौट आए।

+0

मुझे एक ही समस्या है, मुझे आशा है कि आपने एक बग रिपोर्ट पोस्ट की है ... (bugs.python.org) –

उत्तर

2

मुझे संदेह है कि 'परिणाम' क्लिपबोर्ड पर कभी भी मंजूरी मिलने के बजाय नहीं मिलता है। विंडोज़ पर 3.4 8.5 के बजाय टीसीएल/टीके 8.6 के साथ आता है। मुझे संदेह है कि यह अंतर है, और यह संभवतः एक समय मुद्दा है। काम जोड़ने के बाद r.destroy है? पाइथन से बाहर निकलने से पहले टीके रूट को स्पष्ट रूप से नष्ट करना आम तौर पर एक अच्छा विचार है। जब तक हमने ऐसा करना शुरू नहीं किया तब तक हमें टेस्ट सूट में समस्याएं थीं।

+0

संशोधित परीक्षण स्क्रिप्ट से पता चलता है कि समस्या एक समय समस्या नहीं है: – fedorch

+0

मैंने बहुत अधिक लिखने की कोशिश की और क्या कोई टिप्पणी नहीं। मैंने नए परिणाम और विचार जोड़कर अपना प्रश्न अपडेट किया। – fedorch

+0

मैंने Win7 पर 3.4.2 के साथ अपनी मूल 5 लाइनों की कोशिश की और यह काम करता है। मेरे पास कोई अन्य विचार नहीं है क्यों आपके लिए नहीं। –

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