mirror of https://github.com/python/cpython
Issue #22085: Dropped support of Tk 8.3 in Tkinter.
This commit is contained in:
parent
f44611cadf
commit
6716d60cec
|
@ -245,7 +245,7 @@ class Variable:
|
|||
Return the name of the callback.
|
||||
"""
|
||||
cbname = self._master._register(callback)
|
||||
self._tk.call("trace", "variable", self._name, mode, cbname)
|
||||
self._tk.call("trace", "add", "variable", self._name, mode, cbname)
|
||||
return cbname
|
||||
trace = trace_variable
|
||||
def trace_vdelete(self, mode, cbname):
|
||||
|
@ -254,12 +254,12 @@ class Variable:
|
|||
MODE is one of "r", "w", "u" for read, write, undefine.
|
||||
CBNAME is the name of the callback returned from trace_variable or trace.
|
||||
"""
|
||||
self._tk.call("trace", "vdelete", self._name, mode, cbname)
|
||||
self._tk.call("trace", "remove", "variable", self._name, mode, cbname)
|
||||
self._master.deletecommand(cbname)
|
||||
def trace_vinfo(self):
|
||||
"""Return all trace callback information."""
|
||||
return [self._tk.split(x) for x in self._tk.splitlist(
|
||||
self._tk.call("trace", "vinfo", self._name))]
|
||||
self._tk.call("trace", "info", "variable", self._name))]
|
||||
def __eq__(self, other):
|
||||
"""Comparison for equality (==).
|
||||
|
||||
|
@ -3789,8 +3789,7 @@ class PanedWindow(Widget):
|
|||
def _test():
|
||||
root = Tk()
|
||||
text = "This is Tcl/Tk version %s" % TclVersion
|
||||
if TclVersion >= 8.1:
|
||||
text += "\nThis should be a cedilla: \xe7"
|
||||
text += "\nThis should be a cedilla: \xe7"
|
||||
label = Label(root, text=text)
|
||||
label.pack()
|
||||
test = Button(root, text="Click me!",
|
||||
|
|
|
@ -113,6 +113,8 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #22085: Dropped support of Tk 8.3 in Tkinter.
|
||||
|
||||
- Issue #21580: Now Tkinter correctly handles bytes arguments passed to Tk.
|
||||
In particular this allows to initialize images from binary data.
|
||||
|
||||
|
|
|
@ -9,8 +9,8 @@ Copyright (C) 1994 Steen Lumholt.
|
|||
|
||||
/* TCL/TK VERSION INFO:
|
||||
|
||||
Only Tcl/Tk 8.3.1 and later are supported. Older versions are not
|
||||
supported. Use Python 2.6 or older if you cannot upgrade your
|
||||
Only Tcl/Tk 8.4 and later are supported. Older versions are not
|
||||
supported. Use Python 3.4 or older if you cannot upgrade your
|
||||
Tcl/Tk libraries.
|
||||
*/
|
||||
|
||||
|
@ -36,13 +36,6 @@ Copyright (C) 1994 Steen Lumholt.
|
|||
#define CHECK_SIZE(size, elemsize) \
|
||||
((size_t)(size) <= Py_MAX((size_t)INT_MAX, UINT_MAX / (size_t)(elemsize)))
|
||||
|
||||
/* Starting with Tcl 8.4, many APIs offer const-correctness. Unfortunately,
|
||||
making _tkinter correct for this API means to break earlier
|
||||
versions. USE_COMPAT_CONST allows to make _tkinter work with both 8.4 and
|
||||
earlier versions. Once Tcl releases before 8.4 don't need to be supported
|
||||
anymore, this should go. */
|
||||
#define USE_COMPAT_CONST
|
||||
|
||||
/* If Tcl is compiled for threads, we must also define TCL_THREAD. We define
|
||||
it always; if Tcl is not threaded, the thread functions in
|
||||
Tcl are empty. */
|
||||
|
@ -58,15 +51,8 @@ Copyright (C) 1994 Steen Lumholt.
|
|||
|
||||
#include "tkinter.h"
|
||||
|
||||
/* For Tcl 8.2 and 8.3, CONST* is not defined (except on Cygwin). */
|
||||
#ifndef CONST84_RETURN
|
||||
#define CONST84_RETURN
|
||||
#undef CONST
|
||||
#define CONST
|
||||
#endif
|
||||
|
||||
#if TK_VERSION_HEX < 0x08030102
|
||||
#error "Tk older than 8.3.1 not supported"
|
||||
#if TK_VERSION_HEX < 0x08040002
|
||||
#error "Tk older than 8.4 not supported"
|
||||
#endif
|
||||
|
||||
#if !(defined(MS_WINDOWS) || defined(__CYGWIN__))
|
||||
|
@ -376,10 +362,10 @@ unicodeFromTclObj(Tcl_Obj *value)
|
|||
|
||||
|
||||
static PyObject *
|
||||
Split(char *list)
|
||||
Split(const char *list)
|
||||
{
|
||||
int argc;
|
||||
char **argv;
|
||||
const char **argv;
|
||||
PyObject *v;
|
||||
|
||||
if (list == NULL) {
|
||||
|
@ -481,7 +467,7 @@ SplitObj(PyObject *arg)
|
|||
}
|
||||
else if (PyUnicode_Check(arg)) {
|
||||
int argc;
|
||||
char **argv;
|
||||
const char **argv;
|
||||
char *list = PyUnicode_AsUTF8(arg);
|
||||
|
||||
if (list == NULL ||
|
||||
|
@ -496,7 +482,7 @@ SplitObj(PyObject *arg)
|
|||
}
|
||||
else if (PyBytes_Check(arg)) {
|
||||
int argc;
|
||||
char **argv;
|
||||
const char **argv;
|
||||
char *list = PyBytes_AsString(arg);
|
||||
|
||||
if (Tcl_SplitList((Tcl_Interp *)NULL, list, &argc, &argv) != TCL_OK) {
|
||||
|
@ -563,8 +549,9 @@ static void EnableEventHook(void); /* Forward */
|
|||
static void DisableEventHook(void); /* Forward */
|
||||
|
||||
static TkappObject *
|
||||
Tkapp_New(char *screenName, char *className,
|
||||
int interactive, int wantobjects, int wantTk, int sync, char *use)
|
||||
Tkapp_New(const char *screenName, const char *className,
|
||||
int interactive, int wantobjects, int wantTk, int sync,
|
||||
const char *use)
|
||||
{
|
||||
TkappObject *v;
|
||||
char *argv0;
|
||||
|
@ -1857,7 +1844,7 @@ Tkapp_SplitList(PyObject *self, PyObject *args)
|
|||
{
|
||||
char *list;
|
||||
int argc;
|
||||
char **argv;
|
||||
const char **argv;
|
||||
PyObject *arg, *v;
|
||||
int i;
|
||||
|
||||
|
@ -1984,7 +1971,7 @@ PythonCmd_Error(Tcl_Interp *interp)
|
|||
* function or method.
|
||||
*/
|
||||
static int
|
||||
PythonCmd(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
|
||||
PythonCmd(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[])
|
||||
{
|
||||
PythonCmd_ClientData *data = (PythonCmd_ClientData *)clientData;
|
||||
PyObject *func, *arg, *res;
|
||||
|
|
Loading…
Reference in New Issue