आपकी मदद से मैं एक टिंकर ऐप बनाने में सक्षम हूं जो cPickle का उपयोग करके डेटा को बाइनरी में सहेजता है और मैं इस डेटा को एक साधारण ड्रॉप-डाउन कैस्केड (फ़ाइल ओपन, फ़ाइल सेव, आदि) का उपयोग करके ऐप में वापस खोलने में सक्षम हूं।

मेरा सवाल है, उपयोगकर्ता को डेटा खोलने के लिए, उन्हें मेरे द्वारा बनाए गए exe को खोलना होगा, फ़ाइल-ओपन का चयन करना होगा, बाइनरी फ़ाइल पर नेविगेट करना होगा और इसे क्लिक करना होगा। जाहिरा तौर पर यह कुछ के लिए बहुत अधिक है और वे सीधे बाइनरी फ़ाइल पर डबल-क्लिक करके फ़ाइल खोलना चाहते हैं। मैंने बाइनरी फ़ाइल को एक कल्पित .xxx प्रारूप में सहेजा है और मैं फ़ाइल को exe ऐप से जोड़ सकता हूं, हालांकि जब मैं फ़ाइल लॉन्च करता हूं, तो यह टिंकर जीयूआई खोलता है लेकिन कुछ भी नहीं होता है। स्पष्ट रूप से मुझे उस डेटा को पॉप्युलेट करने के लिए खुले फ़ंक्शन को कॉल करना होगा। क्या किसी को ऐसा कुछ करने का तरीका पता है? क्या यह संभव भी है? डेटा को बाइनरी फ़ाइल में सहेजने का एक तरीका और फिर जब सीधे खोला जाता है तो स्क्रिप्ट एक प्रकार के ध्वज की तलाश करती है और मैं खुले फ़ंक्शन को कॉल कर सकता हूं या क्या मैं आधार से बाहर हूं? धन्यवाद

अद्यतन

def file_open():
"""Open saved .gsd binary file"""
designer_open_file = cleanpath
designer_open_file = filedialog.askopenfilename(
        defaultextension=".gsd",
        filetypes=(("GSD", "*.gsd"), ("All files", "*"))
    )
if designer_open_file is None:
    return

saved_gsd_data = pk.load(open(designer_open_file, "rb"))

Outside of function:

if len(sys.argv) > 1:
openfilepath = "".join(sys.argv[1:])
cleanpath = os.path.abspath(openfilepath)
root.after_idle(file_open)
0
Evan Becker 29 नवम्बर 2020, 23:16

1 उत्तर

सबसे बढ़िया उत्तर

इस सरल उदाहरण पर विचार करें

import tkinter as tk
import sys

def load_file():
    try:
        with open(sys.argv[1],'r') as data:
            text.insert(1.0,data.readlines())
    except FileNotFoundError:
        print("File does not exist")

root = tk.Tk()
text = tk.Text(root,width=80,height=40)
text.grid()

if len(sys.argv) > 1:
    root.after_idle(load_file)

root.mainloop()

यदि पायथन लिपि/निष्पादन योग्य को दिए गए तर्कों की लंबाई 1 से अधिक है (जिसका अर्थ है कि हमारे द्वारा निष्पादित की जा रही फ़ाइल के नाम से कहीं अधिक है) तो मैं GUI के बाद load_file फ़ंक्शन को कॉल करने के लिए टिंकर को शेड्यूल करता हूं। खींचा गया है।

फिर load_file फ़ंक्शन में, मुझे तर्कों से फ़ाइल का नाम मिलता है और इसका उपयोग फ़ाइल को खोलने और जो भी आवश्यक हो वह करने के लिए करता है।

(यह एक निष्पादन योग्य के बजाय एक पायथन लिपि के रूप में परीक्षण किया गया है क्योंकि आपने यह निर्दिष्ट नहीं किया है कि आपने निष्पादन योग्य कैसे बनाया है)

0
scotty3785 1 पद 2020, 14:06