Bug 6339 - Проблемы с tkinter + setlocale()
: Проблемы с tkinter + setlocale()
Status: CLOSED WORKSFORME
: Sisyphus
(All bugs in Sisyphus/python-modules-tkinter)
: unstable
: all Linux
: P2 normal
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2005-03-28 20:36 by
Modified: 2008-05-29 01:40 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2005-03-28 20:36:12
После перехода на python 2.4 заметил следующую неприятную особенность: при
попытке использовать в программах с интерфейсом на базе Tkinter простого
вызова locale.setlocale(locale.LC_ALL, '') на stderr выдается:

error reading package index file /usr/share/tcl/vfs1.3/pkgIndex.tcl:
syntax error in expression "[package provide Tcl] < 8.4": extra tokens at
end of expression

Ошибка выдается в момент инициализации Tk (в момент создания первого объекта
Tkinter, будь то Frame или Button или Tk), без setlocale() никакой ошибки не
выдается.
Кроме того, после вызова setlocale() не работает клавиша BackSpace в полях
ввода
(например Entry).

Вот простой testcase:

#!/usr/bin/python
# -*- coding: koi8-r -*-

import locale
import time
from Tkinter import *

class fmMain(Frame):
    def createWidgets(self):
        self.txtOne = Entry(self)
        self.txtOne.pack()
        self.txtOne["width"] = 10
        self.btnOne = Button(self)
        self.btnOne["text"] = unicode("Проба", "KOI8-R")
        self.btnOne["command"] = self.GetOne
        self.btnOne.pack()

    def __init__(self, master = None):
        Frame.__init__(self, master)
        self.pack()
        self.createWidgets()

    def GetOne(self):
        print time.strftime('%A')

locale.setlocale(locale.LC_ALL, "")
main = fmMain()
main.mainloop()

Выдает упомянутую ошибку, не работает забой в поле ввода. Если закомментировать
вызов setlocale(), ошибки больше нет, забой работает (и день недели при нажатии
на кнопку разумеется выдается в локали C).

eugene ~/update $ rpm -q python-modules-tkinter
python-modules-tkinter-2.4.0-alt9
------- Comment #1 From 2005-04-07 14:13:26 -------
2.4.1-alt3 - ошибка уже не выдается, но BackSpace в полях ввода по прежнему не
работает после вызова setlocale()
------- Comment #2 From 2005-04-19 15:59:31 -------
Мндя. Подтверждаю, буду разбираться.... 
------- Comment #3 From 2005-06-19 01:35:49 -------
Мы с братвой закоммитили это в апстрим :(, бум 
ждать...https://sourceforge.net/tracker/index.php?func=detail&aid=1222721&group_id=5470&atid=105470 
------- Comment #4 From 2008-03-11 14:49:18 -------
Reassign to real maintainer.
------- Comment #5 From 2008-05-28 22:37:46 -------
В 2.5.1 вроде само куда-то исправилось
------- Comment #6 From 2008-05-29 01:40:48 -------
Да, уже не воспроизводится.