Автор Тема: python3 и Tkinter в Alt и Ubuntu  (Прочитано 2518 раз)

Оффлайн Сергей-70

  • Участник
  • *
  • Сообщений: 506
python3 и Tkinter в Alt и Ubuntu
« : 17.01.2017 14:43:53 »
В связи с советом https://forum.altlinux.org/index.php?topic=38119.msg303680#msg303680, я нашел учебный пример текстового редактора и сделал в нем возможность получать в командной строке ссылку на значок и на текстовый файл. На ноуте с убунту все работало нормально. В альте стала вылетать ошибка на строчке
Color2 = '%s%02x' % (Color2, j) File "/home/papa/python/edit/configure.py", line 28, in <module>
    Color2 = '%s%02x' % (Color2, j)
TypeError: %x format: an integer is required, not float

Там код такой
if widget['finish']:
  Color1 = widget['finish']
  Color2 = '#'
  Color3 = '#'
  f1 = 1.15
  f2 = 0.65
  fx = [int(Color1[1:3],16),
        int(Color1[3:5],16),
        int(Color1[5:7],16)]
  for i in fx:
    j = i*f1
    k = i*f2
    if j > 255: j = 255
    if k > 255: k = 255
    Color2 = '%s%02x' % (Color2, j)
    Color3 = '%s%02x' % (Color3, k)
  widget['active'] = Color2
  widget['select'] = Color3

Может быть версия tkinter устарела?

PS А, кстати, как установить idle (или что-то может еще для питона есть?)
« Последнее редактирование: 17.01.2017 15:39:07 от Сергей-70 »

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: python3 и Tkinter в Alt и Ubuntu
« Ответ #1 : 17.01.2017 17:20:23 »
А какая у вас локаль? В русской - запятая это десятичная звпятая

Оффлайн Сергей-70

  • Участник
  • *
  • Сообщений: 506
Re: python3 и Tkinter в Alt и Ubuntu
« Ответ #2 : 17.01.2017 18:51:24 »
в файле было так:
# -*- coding: utf-8 -*-

Оффлайн Сергей-70

  • Участник
  • *
  • Сообщений: 506
Re: python3 и Tkinter в Alt и Ubuntu
« Ответ #3 : 17.01.2017 18:58:49 »
Поменял 
Color2 = '%s%02x' % (Color2, j)
Color3 = '%s%02x' % (Color3, k)

на

Color2 = '%s%02d' % (Color2, j)
Color3 = '%s%02d' % (Color3, k)
и заработало - видимо изменились параметры описания цвета что-ли....

Оффлайн sol13

  • Инженер
  • Участник
  • *
  • Сообщений: 160
  • openbox user
Re: python3 и Tkinter в Alt и Ubuntu
« Ответ #4 : 17.01.2017 22:19:56 »
а версия питона какая?
Rosa LXQT/ALTLinux 10 KDE/AstraLinux 1.7

Оффлайн Сергей-70

  • Участник
  • *
  • Сообщений: 506
Re: python3 и Tkinter в Alt и Ubuntu
« Ответ #5 : 17.01.2017 22:41:58 »
а версия питона какая?
python3.5.1

Вот еще какой момент обнаружился:
Для того, чтобы задать значок программы, отображаемый на панели, делаю так

img = PhotoImage(file=sys.argv[1])
root.tk.call('wm', 'iconphoto', root._w, img)

В Ubunte такой метод работал. А в Альте PhotoImage не воспринимает некоторые виды файлов, у меня не узнал png, а gif видит. Но гиф на панели не очень красиво выглядит, то что в png прозрачное, в gif - черным цветом выделяется.
Получается, что в ubunte установлена какая-то другая библиотека, которая содержит PhotoImage (по-моему, это опять же tkinter). Получается, что один и тот же код по-разному работает... Как можно в pythone использовать изображения png?

avm

  • Гость
Re: python3 и Tkinter в Alt и Ubuntu
« Ответ #6 : 18.01.2017 06:35:30 »
File "/home/papa/python/edit/configure.py", line 28, in <module>
    Color2 = '%s%02x' % (Color2, j)
TypeError: %x format: an integer is required, not float
Требует целого значения, а у Вас:

  f1 = 1.15
  f2 = 0.65
  fx = [int(Color1[1:3],16),
        int(Color1[3:5],16),
        int(Color1[5:7],16)]
  for i in fx:
    j = i*f1
    k = i*f2
Смотрите, берем Вашу f1 = 1.15, что есмь float, и умножаем на целое, например 180:

$ python3
Python 3.5.1 (default, May  5 2016, 10:50:42)
[GCC 5.3.1 20151207 (ALT Linux 5.3.1-alt3)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> f = 1.15
>>> i = 180
>>> j = f * i
>>> type(j)
<class 'float'>
>>> j < 255
True
>>>

В итоге получаем float меньше 255-ти, который улетает в строчку требующую инта. Вот Вам и трэйсбэк. Опять же, в сочетании с python3 для форматирования строк format - лучше не придумаешь.

« Последнее редактирование: 18.01.2017 06:57:09 от avm »

avm

  • Гость
Re: python3 и Tkinter в Alt и Ubuntu
« Ответ #7 : 18.01.2017 06:39:18 »
Как можно в pythone использовать изображения png?
Pillow - библиотека для работы с изображениями.

PS А, кстати, как установить idle (или что-то может еще для питона есть?)
Зачем вам idle под Линем? У Вас есть консоль. Если хочется подсказок в консоли, автодополнения и прочих удобностей, посмотрите в сторону bpython3.
« Последнее редактирование: 18.01.2017 06:47:52 от avm »

Оффлайн ASte

  • Мастер
  • ***
  • Сообщений: 1 566
Re: python3 и Tkinter в Alt и Ubuntu
« Ответ #8 : 18.01.2017 09:28:34 »
PS А, кстати, как установить idle (или что-то может еще для питона есть?)
ЕМНИП нужно установить вот этот модуль:
apt-get install python3-modules-tkinter
А называется он для 3-го питона idle3

У jetbrains весьма неплох PyCharm community edition.
В репозитории его нет (проприетарная лицензия), но легко устанавливается разорчивнием .tar в /opt
« Последнее редактирование: 18.01.2017 09:32:46 от ASte »

Оффлайн Сергей-70

  • Участник
  • *
  • Сообщений: 506
Re: python3 и Tkinter в Alt и Ubuntu
« Ответ #9 : 18.01.2017 23:34:09 »
Спасибо за развернутую консультацию. Вот вычитал такую штуку, что tk 8.6 supports .png
Посмотрел, а в p8 - tk 8.59 - устарело?