示例#1
0
def runTclFiles(tclFile, dump):
    os.chdir(".\Testing")
    r = tk.Tcl()
    if dump:
        r.eval('source ' + tclFile + '1')
    else:
        r.eval('source ' + tclFile)
def test_tkinter_lib():
    try:
        from PIL import Image
        from svglib.svglib import svg2rlg
        from reportlab.graphics import renderPM
        import PySimpleGUI as sg
        import re
    except Exception:
        print(
            "\n!!!!! Looks like you are missing required python packages. Please look at requirements.txt !!!!"
        )
        exit(1)
    try:
        import tkinter
        tkinter_version = tkinter.Tcl().eval('info patchlevel')
        print("Installed tkinter_version: %s \n %s" %
              (tkinter_version, "-" * 100))
        print('Opening test window. Click on "Quit" to run further tests')
        tkinter._test()
    except Exception:
        print(
            "\n!!!!! Looks like you are missing required 'tkinter' python package !!!!"
        )
        print("Try installing looking at following resources:")
        print("1. https://tkdocs.com/tutorial/install.html#install-win-python")
        print(
            "2. https://stackoverflow.com/questions/25905540/importerror-no-module-named-tkinter"
        )
        print()
        exit(1)
示例#3
0
    def __init__(self,url, type, id, window, old_root, frame, path=None, exptype=None):
        logger.setLevel(_logging.INFO)
        stream_handler = _logging.StreamHandler()
        formatter = _logging.Formatter("[%(filename)s] %(message)s")
        stream_handler.setFormatter(formatter)
        logger.addHandler(stream_handler)
        logger.info("CEF Python {ver}".format(ver=cef.__version__))
        logger.info("Python {ver} {arch}".format(
            ver=platform.python_version(), arch=platform.architecture()[0]))
        logger.info("Tk {ver}".format(ver=tk.Tcl().eval('info patchlevel')))
        assert cef.__version__ >= "55.3", "CEF Python v55.3+ required to run this"
        sys.excepthook = cef.ExceptHook  # To shutdown all CEF processes on error
        self.root = tk.Toplevel()
        sw, sh = self.root.winfo_screenwidth(), self.root.winfo_screenheight()
        app = MainFrame(self.root, url, type, id, window, old_root, frame)
        rec = None
        if exptype == "gsr":
            rec = gsr.Record()
            rec.on_rec(path)


    # Tk must be initialized before CEF otherwise fatal error (Issue #306)
        cef.Initialize()

        t1 = threading.Thread(target=app.browser_frame.mainloop())
        t1.start()
        cef.Shutdown()
    def __init__(self):
        self.verbose = False
        # when python is initialized inside slicer there is no argv
        # so create a fake one if needed
        try:
            argv0 = sys.argv[0]
        except AttributeError:
            sys.argv = []
            sys.argv.append("")
        self.tcl = tkinter.Tcl()
        self.tcl.createcommand("py_eval", self.py_eval)
        self.tcl.createcommand("py_package", self.py_package)
        self.tcl.createcommand("py_type", self.py_type)
        self.tcl.createcommand("py_del", self.py_del)
        self.tcl.createcommand("py_puts", self.py_puts)
        self.tcl.createcommand("py_after", self.py_after)
        self.tcl.createcommand("py_vtkInstanceName", self.py_vtkInstanceName)

        self.timer = qt.QTimer()
        self.timer.setSingleShot(True)
        self.timer.setInterval(0)
        self.timer.connect('timeout()', self.after_callback)

        if sys.platform == 'win32':
            # Update environment variables set by application - unlike other platforms,
            # on windows this does not happen automatically so we do it here
            # Note that subsequent env changes will not be reflected
            for key in os.environ.keys():
                self.tcl_putenv(key, os.environ[key])

        # This path is Slicer-specific
        self.tcl.eval('source "%s/bin/Python/tpycl/tpycl.tcl"' %
                      slicer.app.slicerHome)
def main():
    logger.setLevel(_logging.INFO)
    stream_handler = _logging.StreamHandler()
    formatter = _logging.Formatter("[%(filename)s] %(message)s")
    stream_handler.setFormatter(formatter)
    logger.addHandler(stream_handler)
    logger.info("CEF Python {ver}".format(ver=cef.__version__))
    logger.info("Python {ver} {arch}".format(ver=platform.python_version(),
                                             arch=platform.architecture()[0]))
    logger.info("Tk {ver}".format(ver=tk.Tcl().eval('info patchlevel')))
    assert cef.__version__ >= "55.3", "CEF Python v55.3+ required to run this"
    sys.excepthook = cef.ExceptHook  # To shutdown all CEF processes on error
    root = tk.Tk()
    app = MainFrame(root)
    #app.get_browser().load_url(r"C:\Users\mani\AppData\Local\Temp\tmp9yiyyzeq.html")
    #app.browser = cef.CreateBrowserSync(cef.WindowInfo(),
    #                                     url=self.html_text)
    #print(type(app))

    #app.set_url(r"C:\Users\mani\AppData\Local\Temp\tmp9yiyyzeq.html")
    #app.LoadUrl()
    # Tk must be initialized before CEF otherwise fatal error (Issue #306)
    cef.Initialize()
    #app.get_browser()LoadUrl(r"C:\Users\mani\AppData\Local\Temp\tmp9yiyyzeq.html")
    app.mainloop()
    cef.Shutdown()
    def on_closing(self, event=0):
        if sys.platform == "darwin":  # macOS
            if Version(tkinter.Tcl().call("info", "patchlevel")) >= Version("8.6.9"):  # Tcl/Tk >= 8.6.9
                os.system("defaults delete -g NSRequiresAquaSystemAppearance")  # turn off dark mode for all apps

        self.destroy()
        self.running = False
        exit()
示例#7
0
 def disable_macos_dark_title_bar():
     if sys.platform == "darwin" and not Settings.deactivate_macos_window_header_manipulation:  # macOS
         if Version(platform.python_version()) < Version("3.10"):
             if Version(tkinter.Tcl().call(
                     "info",
                     "patchlevel")) >= Version("8.6.9"):  # Tcl/Tk >= 8.6.9
                 os.system(
                     "defaults delete -g NSRequiresAquaSystemAppearance")
示例#8
0
def snack_raw_pitch_python(wav_fn, frame_shift, window_size, max_pitch, min_pitch):
    """Implement snack_raw_pitch() by calling Snack through Python's tkinter
       library

    Note this method can only be used if the user's machine is setup, so that
    Tcl/Tk can be accessed through Python's tkinter library.

    The vectors returned here are the raw Snack output, without padding.
    For more info, see documentation for snack_raw_pitch().
    """
    try:
        import tkinter
    except ImportError:
        try:
            import Tkinter as tkinter
        except ImportError: # pragma: no cover
            print("Need Python library tkinter. Is it installed?")

    # HACK: Need to replace single backslash with two backslashes,
    #       so that the Tcl shell reads the file path correctly on Windows
    if sys.platform == 'win32' or sys.platform == 'cygwin': # pragma: no cover
        wav_fn = wav_fn.replace('\\', '\\\\')

    # XXX I'm assuming Hz for pitch; the docs don't actually say that.
    # http://www.speech.kth.se/snack/man/snack2.2/tcl-man.html#spitch
    tcl = tkinter.Tcl()
    try:
        # XXX This will trigger a message 'cannot open /dev/mixer' on the
        # console if you don't have a /dev/mixer.  You don't *need* a mixer to
        # snack the way we are using it, but there's no practical way to
        # suppress the message without modifying the snack source.  Fortunately
        # most people running opensauce will in fact have a /dev/mixer.
        tcl.eval('package require snack')
    except tkinter.TclError as err: # pragma: no cover
        log.critical('Cannot load snack (is it installed?): %s', err)
        return
    tcl.eval('snack::sound s')
    tcl.eval('s read {}'.format(wav_fn))
    cmd = ['s pitch -method esps']
    cmd.extend(['-framelength {}'.format(frame_shift / 1000)])
    cmd.extend(['-windowlength {}'.format(window_size / 1000)])
    cmd.extend(['-maxpitch {}'.format(max_pitch)])
    cmd.extend(['-minpitch {}'.format(min_pitch)])
    # Run Snack pitch command
    tcl.eval('set data [{}]'.format(' '.join(cmd)))
    # XXX check for errors here and log and abort if there is one.  Result
    # string will start with ERROR:.
    # Collect results and save in return variables
    num_frames = int(tcl.eval('llength $data'))
    F0_raw = np.empty(num_frames)
    V_raw = np.empty(num_frames)
    # snack returns four values per frame, we only care about the first two.
    for i in range(num_frames):
        values = tcl.eval('lindex $data ' + str(i)).split()
        F0_raw[i] = np.float_(values[0])
        V_raw[i] = np.float_(values[1])

    return F0_raw, V_raw
示例#9
0
    def __init__(self, gtkw: str, hierarchy):
        self.gtkw = gtkw
        self.used_signals = set()  # type: Set[str]
        self.hierarchy = hierarchy

        # set up TCL
        tcl = tkinter.Tcl()
        self.tcl = tcl
        tcl.createcommand("add", self.tcl_add)
        tcl.createcommand('quietly', self.tcl_quietly)
示例#10
0
 def __init__(self):
     """Initialize IXNET members
     """
     super().__init__()
     self._tclsh = tkinter.Tcl()
     self._script = None
     self._cfg = None
     self._logger = logging.getLogger(__name__)
     self._params = None
     self._bidir = None
示例#11
0
 def __init__(self):
     """Initialize IXNET members
     """
     super().__init__()
     self._script = os.path.join(
         settings.getValue('TRAFFICGEN_IXIA_3RD_PARTY'),
         settings.getValue('TRAFFICGEN_IXNET_TCL_SCRIPT'))
     self._tclsh = tkinter.Tcl()
     self._cfg = None
     self._logger = logging.getLogger(__name__)
     self._params = None
     self._bidir = None
示例#12
0
    def on_closing(self, event=0):
        if sys.platform == "darwin":  # macOS
            if Version(tkinter.Tcl().call(
                    "info",
                    "patchlevel")) >= Version("8.6.9"):  # Tcl/Tk >= 8.6.9
                os.system("defaults delete -g NSRequiresAquaSystemAppearance"
                          )  # Only for dark-mode testing!
                # This command reverts the dark-mode setting for all programs.

        self.audio_analyzer.running = False
        self.play_sound_thread.running = False
        self.destroy()
示例#13
0
    def __init__(self, config, opts):
        """Initializes connection to IxLoad.

        Args:
            config(dict):  IxLoad related part of environment configuration
            opts(OptionParser):  py.test config.option object which contains all py.test cli options

        """
        self.__opts = opts
        self.__config = config

        import tkinter
        self.tcl_interpret = tkinter.Tcl()

        def tcl_puts(*args):
            if len(args) >= 2:
                stream = args[0]
                if stream == "stdout":
                    self.class_logger.debug(" ".join(args[1:]))
                elif stream == "stderr":
                    self.class_logger.error(" ".join(args[1:]))
                else:
                    self.class_logger.debug("stream <%s>: %s" %
                                            (args[0], " ".join(args[1:])))
            elif len(args) == 1:
                self.class_logger.debug(args[0])
            else:
                self.class_logger.error("Called puts without arguments.")
            return None

        self.tcl_interpret.createcommand("tcl_puts", tcl_puts)
        self.class_logger.debug("Insert tcl script to catch puts output.")
        ixia_helpers.tcl_puts_replace(self.tcl_interpret)

        self.id = config['id']
        self.type = config['instance_type']

        self.ixload_ip = config['ixload_ip']
        self.ixload_user = config['ixload_user']
        self.ports = config['ports']

        self.ixload_tmppath = "C:\\Users\\{0}\\AppData\\Local\\Temp\\".format(
            self.ixload_user)
        self.ixload_respath = "C:\\IxLoadWD\\"
        self.__log_name = "TAF-{0}-{1}-{2}".format(os.uname()[1], os.getuid(),
                                                   int(time.time()))

        ixia_helpers.ixtclhal_import(self.tcl_interpret)
        ixia_helpers.ixload_import(self.tcl_interpret)

        self.qt = None
        self.tst = None
        self.repo_file = None
示例#14
0
def get_tk_patchlevel():
    global _tk_patchlevel
    if _tk_patchlevel is None:
        tcl = tkinter.Tcl()
        patchlevel = []
        for x in tcl.call('info', 'patchlevel').split('.'):
            try:
                x = int(x, 10)
            except ValueError:
                x = -1
            patchlevel.append(x)
        _tk_patchlevel = tuple(patchlevel)
    return _tk_patchlevel
示例#15
0
def get_tk_patchlevel():
    global _tk_patchlevel
    if _tk_patchlevel is None:
        tcl = tkinter.Tcl()
        patchlevel = tcl.call('info', 'patchlevel')
        m = re.fullmatch('(\\d+)\\.(\\d+)([ab.])(\\d+)', patchlevel)
        major, minor, releaselevel, serial = m.groups()
        major, minor, serial = int(major), int(minor), int(serial)
        releaselevel = {'a': 'alpha', 'b': 'beta', '.': 'final'}[releaselevel]
        if releaselevel == 'final':
            _tk_patchlevel = major, minor, serial, releaselevel, 0
        else:
            _tk_patchlevel = major, minor, 0, releaselevel, serial
    return _tk_patchlevel
示例#16
0
    def __init__(self, *args, **kwargs):
        super(BoardTests, self).__init__(*args, **kwargs)

        # initialize tkinter
        tk.Tcl()

        # prevent __add_sprite from getting called as
        # tkinter is not initialized
        Board.DISABLE_SPRITE_MANAGER = True
        # Make up board with no holes
        self.__hole_board1 = Board.min_oft_and_holes(4, [(2, 3), (1, 2)])
        self.__no_hole_board1 = Board.min_oft_and_holes(4, [])

        self.__homogeneous_board1 = Board.homogeneous(2, 10, 5)
示例#17
0
 def exposed_new_tcl_interpreter(self, key, *args, **kwargs):
     global tcl_archive
     print(f"{PORT}> client adding tcl interpreter: {key}")
     interpreter = tkinter.Tcl()
     #if key in tcl_archive:
     #    try:
     #        del tcl_archive[key]
     #    except Exception as e:
     #       print(f"Exception: {e}")
     tcl_archive[key] = interpreter
     print(f"Tcl intrep: {interpreter} {type(interpreter)}")
     x = interpreter.eval("puts \"===\"")
     print(type(x))
     return interpreter
示例#18
0
    def __init__(self, ipaddr, user):
        """Initializes connection to IxLoad.

        Args:
            ipaddr(str):  IxLoad host IP address.
            user(str):  IxLoad windows user.

        """
        import tkinter
        self.tcl_interpret = tkinter.Tcl()

        def tcl_puts(*args):
            if len(args) >= 2:
                stream = args[0]
                if stream == "stdout":
                    self.class_logger.debug(" ".join(args[1:]))
                elif stream == "stderr":
                    self.class_logger.error(" ".join(args[1:]))
                else:
                    self.class_logger.debug("stream <%s>: %s" %
                                            (args[0], " ".join(args[1:])))
            elif len(args) == 1:
                self.class_logger.debug(args[0])
            else:
                self.class_logger.error("Called puts without arguments.")
            return None

        self.tcl_interpret.createcommand("tcl_puts", tcl_puts)
        self.class_logger.debug("Insert tcl script to catch puts output.")
        ixia_helpers.tcl_puts_replace(self.tcl_interpret)

        self.ixload_ip = ipaddr
        self.ixload_user = user

        # Temp path for sending rxf files to IxLoad
        self.ixload_tmppath = "C:\\Users\\{0}\\AppData\\Local\\Temp\\".format(
            self.ixload_user)
        # Path for storing test csv reports. It could be override in child IxLoadHL class.
        self.ixload_respath = self.ixload_tmppath
        self.__log_name = "IxLoadTclAPI-{0}-{1}-{2}".format(
            os.uname()[1], os.getuid(), int(time.time()))
        self.ixload_logpath = None

        ixia_helpers.ixtclhal_import(self.tcl_interpret)
        ixia_helpers.ixload_import(self.tcl_interpret)

        self.test_controller = None
        self.tst = None
示例#19
0
def main():
    logger.setLevel(_logging.INFO)
    stream_handler = _logging.StreamHandler()
    formatter = _logging.Formatter("[%(filename)s] %(message)s")
    stream_handler.setFormatter(formatter)
    logger.addHandler(stream_handler)
    logger.info("CEF Python {ver}".format(ver=cef.__version__))
    logger.info("Python {ver}".format(ver=sys.version[:6]))
    logger.info("Tk {ver}".format(ver=tk.Tcl().eval('info patchlevel')))
    assert cef.__version__ >= "55.3", "CEF Python v55.3+ required to run this"
    sys.excepthook = cef.ExceptHook  # To shutdown all CEF processes on error
    root = tk.Tk()
    app = MainFrame(root)
    # Tk must be initialized before CEF otherwise fatal error (Issue #306)
    cef.Initialize()
    app.mainloop()
    cef.Shutdown()
示例#20
0
def collect_tkinter(info_add):
    try:
        import _tkinter
    except ImportError:
        pass
    else:
        attributes = ('TK_VERSION', 'TCL_VERSION')
        copy_attributes(info_add, _tkinter, 'tkinter.%s', attributes)

    try:
        import tkinter
    except ImportError:
        pass
    else:
        tcl = tkinter.Tcl()
        patchlevel = tcl.call('info', 'patchlevel')
        info_add('tkinter.info_patchlevel', patchlevel)
示例#21
0
    def _main(self):
        """ Method: module loop waiting for module event """
        MCS.append_log("Module Started")
        try:
            # Load TCL part
            self.tcl_interpreter = tkinter.Tcl()
            for script in self.load_list:
                self.tcl_interpreter.eval("source {:.50s}/{:.50s}".format(
                    "modules/" + self.__class__.__name__, script))
        except Exception as e:
            MCS.append_log(
                "{:.100s} Need to reboot... Exception: {:.100s}".format(
                    self.name, str(e)))
            traceback.print_exc()
            print("[" + self.name + "] Can't Load source !")

        super(TclModule, self)._main()
        return
示例#22
0
def launch_browser(url, type):
    logger.setLevel(_logging.INFO)
    stream_handler = _logging.StreamHandler()
    formatter = _logging.Formatter("[%(filename)s] %(message)s")
    stream_handler.setFormatter(formatter)
    logger.addHandler(stream_handler)
    logger.info("CEF Python {ver}".format(ver=cef.__version__))
    logger.info("Python {ver} {arch}".format(ver=platform.python_version(),
                                             arch=platform.architecture()[0]))
    logger.info("Tk {ver}".format(ver=tk.Tcl().eval('info patchlevel')))
    assert cef.__version__ >= "55.3", "CEF Python v55.3+ required to run this"
    sys.excepthook = cef.ExceptHook  # To shutdown all CEF processes on error
    root = tk.Toplevel()
    root.state("zoomed")
    app = MainFrame(root, url, type)
    # Tk must be initialized before CEF otherwise fatal error (Issue #306)
    cef.Initialize()
    app.mainloop()
    cef.Shutdown()
示例#23
0
def main():
    logger.setLevel(_logging.DEBUG)
    stream_handler = _logging.StreamHandler()
    formatter = _logging.Formatter("[%(filename)s] %(message)s")
    stream_handler.setFormatter(formatter)
    logger.addHandler(stream_handler)
    logger.info("CEF Python {ver}".format(ver=cef.__version__))
    logger.info("Python {ver} {arch}".format(
            ver=platform.python_version(), arch=platform.architecture()[0]))
    logger.info("Tk {ver}".format(ver=tk.Tcl().eval('info patchlevel')))
    assert cef.__version__ >= "55.3", "CEF Python v55.3+ required to run this"
    sys.excepthook = cef.ExceptHook  # To shutdown all CEF processes on error
    # Tk must be initialized before CEF otherwise fatal error (Issue #306)
    root = tk.Tk()
    app = MainFrame(root)
    settings = {}
    if MAC:
        settings["external_message_pump"] = True
    cef.Initialize(settings=settings)
    app.mainloop()
    logger.debug("Main loop exited")
    cef.Shutdown()
示例#24
0
 def _add_info_box(self, frame):
     self._text = richtext.RichText(frame, height=10, scroll="v")
     self._text.grid(row=0, column=0, padx=1, pady=1, sticky=tk.NSEW)
     self._text.add_text(_text["plat"].format(sys.platform))
     self._text.add_text(_text["tcl"].format(
         tk.Tcl().eval('info patchlevel')))
     self._text.add_text(_text["pyplat"].format(sys.implementation))
     self._text.add_text(_text["pyroot"].format(sys.base_prefix))
     self._text.add_text(_text["np"].format(np.__version__))
     self._text.add_text(_text["scipy"].format(scipy.__version__))
     if gpd is not None:
         self._text.add_text(_text["gpd"].format(gpd.__version__))
     else:
         self._text.add_text(_text["gpd_none"])
     if pyproj is not None:
         self._text.add_text(_text["pyproj"].format(pyproj.__version__))
     else:
         self._text.add_text(_text["pyproj_none"])
     if tilemapbase is not None:
         self._text.add_text(_text["tilemapbase"].format(
             tilemapbase.__version__))
     else:
         self._text.add_text(_text["tilemapbase_none"])
示例#25
0
def execute_hammer_command(hammername, commandpath, hammercommand):
    count = 0
    tcl = tkinter.Tcl()
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    s.settimeout(90.0)
    #Bind socket to local host and port

    try:
        s.bind(("0.0.0.0", 8888))
    except socket.error as msg:
        print('Bind failed. Error Code : ' + str(msg[0]) + ' Message ' +
              msg[1])
        sys.exit()

    print('Socket bind complete')
    s.listen(4)

    construct_request(commandpath + "\\" + hammercommand)

    result = tcl.eval('source {' + commandpath + '\\hcmd.tcl}')

    for key, value in channels.items():
        commandline = "start script -mc " + hammername + " -h " + hammername + " -c " + key + " -n " + "C:\\Automation\\Test\\Trunk\\Regression\\" + value[
            0] + " -i " + value[1]
        #print("Sending command: " + commandline + "\n")
        result = tcl.eval('hcmdmain {%s}' % commandline)

    while count < len(channels):
        c, addr = s.accept()
        print_lock.acquire()
        count += 1
        print('Connection:' + str(count) + ' <<<<< ' + addr[0] + ':' +
              str(addr[1]))
        threading.Thread(target=get_result, args=(c, addr)).start()
    s.close()
示例#26
0
def gp_mp(x_pn):  # (m)ake (p)ath
    if not gf_id(x_pn): os.makedirs(x_pn)


def gp_ep(x_pn):  # (e)mpty out (p)ath
    if not gf_id(x_pn): return
    pu_pn, pu_ons, pu_bns = next(os.walk(x_pn))
    for bu2_on in pu_ons:
        bu2_pn = gf_pj(pu_pn, bu2_on)
        gp_rt(bu2_pn)
    for bu2_bn in pu_bns:
        bu2_fn = gf_pj(pu_pn, bu2_bn)
        gp_ul(bu2_fn)


GC_TCL = tkinter.Tcl()
GC_TCL.eval("""
  proc gf_tcl_ver {} {
    return [info tclversion]
  }
  proc gf_run_xcmd {args} {
    set fu_ec [ catch { set fu_result [ exec {*}$args ] } fu_error ]
    if { $fu_ec } {
      return [ list $fu_ec $fu_error ]
    }
    return [ list $fu_ec $fu_result ]
  }
  proc gf_il {x_it} { # (i)s (l)ink
    return [ expr { [file type $x_it] eq "link" } ]
  }
  proc gp_ml { x_link x_target } { # (m)ake (l)ink
示例#27
0
def capture_warnings(capture):
    "Replace warning.showwarning with idle_showwarning_subproc, or reverse."

    global _warnings_showwarning
    if capture:
        if _warnings_showwarning is None:
            _warnings_showwarning = warnings.showwarning
            warnings.showwarning = idle_showwarning_subproc
    else:
        if _warnings_showwarning is not None:
            warnings.showwarning = _warnings_showwarning
            _warnings_showwarning = None

capture_warnings(True)
tcl = tkinter.Tcl()

def handle_tk_events(tcl=tcl):
    """Process any tk events that are ready to be dispatched if tkinter
    has been imported, a tcl interpreter has been created and tk has been
    loaded."""
    tcl.eval("update")

# Thread shared globals: Establish a queue between a subthread (which handles
# the socket) and the main thread (which runs user code), plus global
# completion, exit and interruptable (the main thread) flags:

exit_now = False
quitting = False
interruptable = False
示例#28
0
import os
import sys
import platform
import json
import threading
from timeit import default_timer as timer
# print version, exit if minimum version requirements aren't met
if sys.hexversion < 0x03060000:  # Trying to import tkinter in the new syntax after python 2 causes a crash
    sys.exit("Python 3.6 or greater is required to run this program.")
print("Using Python {}.{}".format(sys.version_info[0], sys.version_info[1]))
version_string = f"Appstore Workbench {version}"
# This is called before the below module imports to ensure no exception is
# encountered trying to import tk
try:
    import tkinter as tk
    print("Using tkinter version {}".format(tk.Tcl().eval('info patchlevel')))
except:
    sys.exit(
        "Cannot start: Tkinter not installed, consult the readme for more information."
    )

try:
    TKVERSION = float(tk.Tcl().eval('info patchlevel')[0:3])
except Exception as e:
    TKVERSION = 0
    print("Failed to get tkinter version ~ {}".format(e))
print(TKVERSION)

# This is called before the below module imports to ensure no exception is
# encountered trying to import pil
try:
示例#29
0
        if browser.CanGoForward():
            if self.forward_state != tk.NORMAL:
                self.forward_button.config(state=tk.NORMAL)
                self.forward_state = tk.NORMAL
        else:
            if self.forward_state != tk.DISABLED:
                self.forward_button.config(state=tk.DISABLED)
                self.forward_state = tk.DISABLED
        self.after(100, self.update_state)


if __name__ == '__main__':
    logger.setLevel(_logging.INFO)
    stream_handler = _logging.StreamHandler()
    formatter = _logging.Formatter("[%(filename)s] %(message)s")
    stream_handler.setFormatter(formatter)
    logger.addHandler(stream_handler)
    logger.info("CEF Python {ver}".format(ver=cef.__version__))
    logger.info("Python {ver} {arch}".format(ver=platform.python_version(),
                                             arch=platform.architecture()[0]))
    logger.info("Tk {ver}".format(ver=tk.Tcl().eval('info patchlevel')))
    assert cef.__version__ >= "55.3", "CEF Python v55.3+ required to run this"
    sys.excepthook = cef.ExceptHook  # To shutdown all CEF processes on error
    root = tk.Tk()
    app = MainFrame(root)
    # Tk must be initialized before CEF otherwise fatal error (Issue #306)
    cef.Initialize()

    app.mainloop()
    cef.Shutdown()
示例#30
0
def setUpModule():
    if test.support.verbose:
        tcl = tkinter.Tcl()
        print('patchlevel =', tcl.call('info', 'patchlevel'))