0 Tkinter gui के साथ CX_Freeze

पर बनाया गया सवाल Sun, Mar 17, 2019 12:00 AM

मैं अपने टिंकर गुई का एक निष्पादन योग्य बनाने के लिए cxfreeze का उपयोग कर रहा हूं। मेरे पास कुछ बटन और पाठ इनपुट हैं जहां मैं अपने प्रोग्राम के साथ गुई पर बातचीत करने में सक्षम हूं, लेकिन ऐसा लगता है जैसे कि जब मैं गुई के पीछे वास्तविक कार्यक्रम को चलाने की कोशिश करता हूं तो कुछ भी नहीं होता है।

क्या किसी को पता होगा कि मैं क्यों अपने आप पर गुई को चला सकता हूं और यह ठीक काम करता है, लेकिन जब गुई को एक निष्पादन योग्य के रूप में खोला जाता है, तो यह सभी कार्यक्षमता खो देता है। क्या यह सभी निर्भरता का ध्यान नहीं रखने का मुद्दा हो सकता है?

हाय मैं अपनी tkinter फ़ाइल और सेटअप फ़ाइल को उम्मीद से डिबग की मदद के लिए दिखाने के लिए इसे संपादित कर रहा हूं।

Setup.py

import sys, os
from cx_Freeze import setup, Executable

PYTHON_INSTALL_DIR = os.path.dirname(sys.executable)
os.environ['TCL_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tcl8.6')
os.environ['TK_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tk8.6')

include_files = [(os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tk86t.dll'), os.path.join('lib', 'tk86t.dll')),
                 (os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tcl86t.dll'), os.path.join('lib', 'tcl86t.dll'))]

# Dependencies are automatically detected, but it might need fine tuning.
build_exe_options = {"packages": ["os"], "includes": ["tkinter"], "include_files": include_files}

# GUI applications require a different base on Windows (the default is for a
# console application).
base = None
if sys.platform == "win32":
    base = "Win32GUI"

os.environ['TCL_LIBRARY'] = r'C:\Users\Tyler\AppData\Local\Programs\Python\Python37-32\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Users\Tyler\AppData\Local\Programs\Python\Python37-32\tcl\tk8.6'

setup(  name = "Screenshotter",
        version = "0.1",
        description = "URL Screenshot Utility",
        options = {"build_exe": build_exe_options},
        executables = [Executable("screenshot_gui.py", base=base)])

Gui.py

import random
from tkinter import Tk, Label, Button, Entry, IntVar, StringVar, DISABLED, NORMAL, END, W, E, Radiobutton
from tkinter import filedialog
from six.moves.urllib.request import urlopen
from screenshotter import collect_png

class ScreenshotGUI:
    def __init__(self, master):
        self.master = master
        master.title("URL Screenshotter")

        self.message = "Please enter a url and select a folder to save the screenshots"
        self.label_text = StringVar()
        self.label_text.set(self.message)
        self.label = Label(master, textvariable=self.label_text)
        self.folder = None

        vcmd = master.register(self.validate) # we have to wrap the command
        self.entry = Entry(master)

        self.select_folder = Button(master, text="Select Folder", command=self.get_filename)
        self.enter_button = Button(master, text="Run", command=self.run, state=NORMAL)

        self.label.grid(row=0, column=0, columnspan=2, sticky=W+E)
        self.entry.grid(row=1, column=0, columnspan=2, sticky=W+E)

        self.selector = IntVar()
        self.button0 = Radiobutton(master, text="All Pages", variable=self.selector, value=0)
        self.button1 = Radiobutton(master, text="Main Pages", variable=self.selector, value=1)
        self.button2 = Radiobutton(master, text="Just this page", variable=self.selector, value=2)
        self.button0.grid(row=2, column=0)
        self.button1.grid(row=2, column=1)
        self.button2.grid(row=2, column=2)

        self.select_folder.grid(row=3, column=0)
        self.enter_button.grid(row=3, column=1)

    def get_filename(self):
        self.folder = filedialog.askdirectory()

    def validate(self, new_text):
        return True

    def run(self):
        self.url = str(self.entry.get())
        try:
            urlopen(self.url)
        except Exception as e:
            self.message = "Please enter a valid url\nFull Error:\n" + e
            self.label_text.set(self.message)
            return

        if not self.folder:
            self.message = "Please select a save folder"
            self.label_text.set(self.message)
            return

        self.select_folder.configure(state=DISABLED)
        self.enter_button.configure(state=DISABLED)
        while True:
            try:
                collect_png(self.url, self.folder, self.selector.get())
                break
            except:
                pass

root = Tk()
my_gui = ScreenshotGUI(root)
root.mainloop()

यहां वे मॉड्यूल हैं जिन्हें मैं अपनी स्काइप फ़ाइल में शामिल करता हूं

from six.moves.urllib.request import urlopen
from bs4 import BeautifulSoup
from lxml import html
import urllib
import imgkit
from time import sleep
    
0
  1. सबसे अधिक संभावना है कि आप कुछ मॉड्यूल गायब हैं, लेकिन इसका उत्तर दिया जाना बहुत अस्पष्ट है। आपको अपना setup.py और संभवतः अपने कोड का एक सरलीकृत संस्करण भी दिखाना होगा।
    2019-03-17 06: 08: 48Z
    0 उत्तर                              0                         
स्रोत रखा गया यहाँ