Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 21, 2017 03:19:43

74LS00
Зарегистрирован: 2016-08-04
Сообщения: 23
Репутация: +  1  -
Профиль   Отправить e-mail  

Быстрые кнопки меню

Прога не моя, я только пытаюсь добавить чего нет.
Вот с этим заработало

 from Tkinter import Button, LEFT, TOP, X, FLAT, RAISED
похоже звёздочка не прокатила
 try:
    from Tkinter import *
except ImportError:
    from tkinter import *

Но прога накрылась
 from Tkinter import Button
от этого стили кнопок стали линуксовые и при попытке использовать те которые были, в гуй вылетает сообщение
Error: Traceback (most recent call last):


self.activekey.highlight()
File “G:\home\Documents\Projects\EAGLE\Keyboard\firmware\GameKB_EasyAVR\keymapper\easykeymap\gui.py”, line 1462, in highlight
self.btn = “Gold.TButton”
File “C:\Python27\lib\lib-tk\Tkinter.py”, line 1333, in __setitem__
self.configure({key: value})
File “C:\Python27\lib\lib-tk\Tkinter.py”, line 1326, in configure
return self._configure('configure', cnf, kw)
File “C:\Python27\lib\lib-tk\Tkinter.py”, line 1317, in _configure
self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
TclError: unknown option “-style”
Я так понимаю прога написана под ttk который не поддерживает relief , а когда я ему тыкаю tkinter он начинает её понимать, но в нём нет style.
Если ему ткнуть опять ttk, то он забывает relief

Отредактировано 74LS00 (Янв. 21, 2017 04:46:28)

Офлайн

#2 Янв. 21, 2017 09:12:12

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Быстрые кнопки меню

Ааа. Понял. Вообще за * я бил-бы по-рукам.
В ttk-евском Style есть собственный способ задачи рельефа. Могу кинуть документацию.

Офлайн

#3 Янв. 21, 2017 11:28:20

74LS00
Зарегистрирован: 2016-08-04
Сообщения: 23
Репутация: +  1  -
Профиль   Отправить e-mail  

Быстрые кнопки меню

Чтото путаное попалось. Но хотелось бы подробнее.
Как потом это прикрутить к кнопке не понял, как стиль для Button оно не работает,
просто вписал в панель

         toolbar = Frame(self.root, borderwidth="1", relief=GROOVE)
		
        ttkstyle = ttk.Style()
        ttkstyle.configure("TButton", relief=[('disabled', 'flat'),('selected', 'sunken'),('pressed', 'sunken'),('active', 'raised'),('!active', 'raised')], background="#ccc")
        eimgnew = ImageTk.PhotoImage(Image.open(self.get_pkg_path('icons/toolbar/document-new.png')))
        newButton = Button(toolbar, image=eimgnew, command=self.newfile)
        newButton.image = eimgnew
        newButton.pack(side=LEFT, padx=2, pady=2)
поменялся только фон (почти незаметно)
а вот оригинал
стиль relief на кнопки вообще никак не действует.

Есть такой вроде как урок, где у автора в видео оба стиля кнопок работает, но у меня этот пример не запустился. Тоже проблемы с ttk .
 import Tkinter as tk
from Tkinter import ttk
import tkinter.ttk
я уж поизвращялся, но не хочет он этот ttk
NameError: global name ‘ttk’ is not defined

Отредактировано 74LS00 (Янв. 21, 2017 11:31:06)

Офлайн

#4 Янв. 21, 2017 11:37:05

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Быстрые кнопки меню

74LS00
global name ‘ttk’ is not defined
А его нет в стандартной поставке ткинтера, надо отдельно устанавливать



Офлайн

#5 Янв. 21, 2017 12:55:40

74LS00
Зарегистрирован: 2016-08-04
Сообщения: 23
Репутация: +  1  -
Профиль   Отправить e-mail  

Быстрые кнопки меню

Нашёл пару кнопок.
В первом случае вариант как у меня. На кнопках стиль системный.
На relief не ругается, но он не работает и в линуксе тоже.
Второй вариант уже на relief реагирует, хотя в линуксе стилизация одинаковая.
От него и плясал, хотя по началу связался с первым и он всё также ругался.

Добавил в импорт то что в этой кнопке на гите к тому что там было, получилось нечто

 try:
    from Tkinter import *
    from ttk import *
    import tkFileDialog as filedialog
    import tkSimpleDialog as simpledialog
    import tkMessageBox as messagebox
	
    import Tkinter as tk
    import ttk
	
except ImportError:
    from tkinter import *
    from tkinter.ttk import *
    from tkinter import filedialog
    from tkinter import simpledialog
    from tkinter import messagebox
    import tkinter as tk
    import tkinter.ttk as ttk
Дальше оказалось достаточно добавить tk. перед Button
 newButton = tk.Button(toolbar, image=eimgnew, relief=FLAT, command=self.newfile)
по началу писал relief=tk.FLAT как в найденой кнопке, но тут оказалось и без tk. работает.

Почему такой странный синтаксис, писать надо или капсом FLAT или строчными уже так ‘flat’ , что в обоих случаях требует лишние нажатия кнопок .

Отредактировано 74LS00 (Янв. 21, 2017 13:44:25)

Офлайн

#6 Янв. 21, 2017 14:41:49

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Быстрые кнопки меню

Потому, что Вы его импортировали. А по PEP константы принято называть заглавными буквами.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version