Mam jeszcze zdecydować, jakiego języka i narzędzi użyć do mojego następnego projektu. Chciałbym użyć Pythona, ale chciałbym zaimplementować wstążkowe paski narzędzi. Niektóre prace zostały wykonane w Tk (http://www.ellogon.org/petasis/bibliography/Tcl2010/TkRibbon.pdf), ale wygląda na to, że nie zostały jeszcze zaimplementowane w tkinter. Czy jest coś, co mogę zrobić, aby to zadziałało?Czy istnieje sposób korzystania z pasków narzędzi wstążki w Tkinter?
Odpowiedz
Musisz utworzyć opakowanie i pobrać wersję pliku binarnego, której możesz użyć. Zbudowałem to do użycia z Pythonem 3.4 i skopiowałem do tkribbon1.0-x86_64.zip. Powinieneś rozpakować to w podkatalogu Python/tcl, aby mogła zostać załadowana wersja tcl używana przez Pythona.
Minimalny wrapper wygląda następująco:
from tkinter import Widget
from os import path
class Ribbon(Widget):
def __init__(self, master, kw=None):
self.version = master.tk.call('package','require','tkribbon')
self.library = master.tk.eval('set ::tkribbon::library')
Widget.__init__(self, master, 'tkribbon::ribbon', kw=kw)
def load_resource(self, resource_file, resource_name='APPLICATION_RIBBON'):
"""Load the ribbon definition from resources.
Ribbon markup is compiled using the uicc compiler and the resource included
in a dll. Load from the provided file."""
self.tk.call(self._w, 'load_resources', resource_file)
self.tk.call(self._w, 'load_ui', resource_file, resource_name)
if __name__ == '__main__':
import sys
from tkinter import *
def main():
root = Tk()
r = Ribbon(root)
name = 'APPLICATION_RIBBON'
if len(sys.argv) > 1:
resource = sys.argv[1]
if len(sys.argv) > 2:
name = sys.argv[2]
else:
resource = path.join(r.library, 'libtkribbon1.0.dll')
r.load_resource(resource, name)
t = Text(root)
r.grid(sticky=(N,E,S,W))
t.grid(sticky=(N,E,S,W))
root.grid_columnconfigure(0, weight=1)
root.grid_rowconfigure(1, weight=1)
root.mainloop()
main()
Running ten wykorzystuje zasoby wbudowany w dll tkribbon i wygląda . Skomplikowany bit będzie pobierał niektóre zasoby znaczników wstążki do biblioteki DLL do załadowania.
Możesz użyć tego przykładu, aby załadować wstążki z istniejących aplikacji. Na przykład python Ribbon.py c:\Windows\System32\mspaint.exe MSPAINT_RIBBON
załaduje zasobnik wstążki z mspaint. Nazwa zasobu w tym przypadku musi być uwzględniona, ponieważ wartość domyślna to APPLICATION_RIBBON. Dla własnej wstążki, użycie uicc do zbudowania pliku .rc, następnie rc /r file.rc
do utworzenia pliku .res i wreszcie link -dll -out:file.dll file.rc -noentry -machine:AMD64
wydaje się działać, aby utworzyć bibliotekę DLL z samym zasobem, która działa z tym rozszerzeniem.
Próbowałem go i działało całkiem rozsądnie, więc po pewnym czasie zaakceptuję to. Może jednak ktoś napisze opakowanie jednego dnia. – chaosflaws
To działa bardzo ładnie. Wielkie dzięki ! – rvcristiand
- 1. Czy istnieje sposób dostępu do wstążki (XML) w czasie wykonywania?
- 2. Resetowanie pasków narzędzi VS 2008
- 3. Tworzenie pasków narzędzi w Visual Studio 2008
- 4. Czy istnieje sposób bezpiecznego korzystania z errno w aplikacji wielowątkowej?
- 5. Czy istnieje sposób korzystania z Thickboxa z dynamiczną zawartością?
- 6. Jak sprawdzić, czy widżet istnieje w Tkinter?
- 7. Czy istnieje sposób korzystania z klienta aiohttp z serwerem proxy?
- 8. Czy istnieje biblioteka javascript do tworzenia wstążki wiadomości w stackoverflow?
- 9. Zestaw pasków narzędzi AndroidNawigacjaIcon nie działa
- 10. Dodanie dwóch pasków narzędzi AppCompat z różnymi motywami
- 11. python i tkinter: używanie pasków przewijania na płótnie
- 12. Czy IE9 włącza "coś" podczas korzystania z narzędzi programistycznych?
- 13. Wady korzystania z pasków + wiosna vs wiosna MVC
- 14. Czy istnieje sposób, aby usunąć etykietę lub przycisk z okna tkinter, a następnie dodać go ponownie?
- 15. Czy to właściwy sposób korzystania z History.js?
- 16. CSS na koniec wstążki
- 17. Próbka wstążki
- 18. Czy istnieje sposób korzystania z interfejsu API do przeglądania w środowisku Django Rest Framework z Authtokenem
- 19. Ustawianie menu dla wielu pasków narzędzi na Androidzie
- 20. Jak usunąć lub ukryć górny cień pasków narzędzi
- 21. Czy istnieje sposób korzystania z czcionek Google Web w wiadomościach e-mail w formacie HTML?
- 22. Sposób korzystania z addEventListener
- 23. Jak określić oddzielną grupę pasków narzędzi dla przycisków widżetów?
- 24. Sposób korzystania z ConfigurationManager.AppSettings
- 25. Czy istnieje sposób użycia Matlab Image Processing Toolbox w F #?
- 26. Sposób korzystania z TextAppearanceSpan
- 27. W jaki sposób obsługiwać wiele pasków postępu w javascript
- 28. Czy mogę zmniejszyć rozmiar pliku pdf w knitR/ggplot2 podczas korzystania z dużego zestawu danych bez korzystania z zewnętrznych narzędzi?
- 29. Czy istnieje sposób korzystania z tabel tempa MySQL w programie Go?
- 30. Czy istnieje lepszy sposób korzystania z asynchronicznych gniazd TCP w C++ zamiast ankiety lub wyboru?
Domyślam się, że musiałbyś napisać własną bibliotekę wokół 'tkribbon', ponieważ podobno nikt jeszcze tego nie zrobił. Lub napisz jakiś kod, żeby zasymulować tego rodzaju pasek narzędzi ... – nbro