Найти - Пользователи
Полная версия: Быстрые кнопки меню
Начало » GUI » Быстрые кнопки меню
1 2
74LS00
Прога не моя, я только пытаюсь добавить чего нет.
Вот с этим заработало
 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
4kpt_IV
Ааа. Понял. Вообще за * я бил-бы по-рукам.
В ttk-евском Style есть собственный способ задачи рельефа. Могу кинуть документацию.
74LS00
Чтото путаное попалось. Но хотелось бы подробнее.
Как потом это прикрутить к кнопке не понял, как стиль для 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
FishHook
74LS00
global name ‘ttk’ is not defined
А его нет в стандартной поставке ткинтера, надо отдельно устанавливать
74LS00
Нашёл пару кнопок.
В первом случае вариант как у меня. На кнопках стиль системный.
На 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’ , что в обоих случаях требует лишние нажатия кнопок .
4kpt_IV
Потому, что Вы его импортировали. А по PEP константы принято называть заглавными буквами.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB