Devo ancora decidere quale lingua e strumenti utilizzare per il mio prossimo progetto. Mi piacerebbe usare python, ma mi piacerebbe implementare le barre degli strumenti del nastro. Alcuni lavori sono stati eseguiti in Tk (http://www.ellogon.org/petasis/bibliography/Tcl2010/TkRibbon.pdf), ma sembra che non sia ancora stato implementato in tkinter. C'è qualcosa che posso fare per farlo funzionare?C'è un modo per usare barre degli strumenti nastro in Tkinter?
risposta
È necessario creare un wrapper per questo e ottenere una versione del file binario che è possibile utilizzare. Ho costruito questo per l'uso con Python 3.4 e copiato su tkribbon1.0-x86_64.zip. Dovresti decomprimere questo nella sottodirectory Python/tcl in modo che la versione di tcl usata da python possa caricarla.
Un wrapper minimo simile a questa:
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()
L'esecuzione di questo utilizza le risorse built-in alla DLL tkribbon e si presenta come . Il bit complicato sta per ottenere alcune risorse di markup Ribbon in una DLL per il caricamento.
È possibile utilizzare questo esempio per caricare i nastri da applicazioni esistenti. Ad esempio, python Ribbon.py c:\Windows\System32\mspaint.exe MSPAINT_RIBBON
caricherà la risorsa nastro da mspaint. Il nome della risorsa in questo caso deve essere incluso poiché l'impostazione predefinita è APPLICATION_RIBBON. Per il tuo nastro, utilizzando uicc per creare un file .rc, quindi rc /r file.rc
per produrre un file .res e infine link -dll -out:file.dll file.rc -noentry -machine:AMD64
sembra funzionare per produrre una risorsa solo DLL che funziona con questa estensione.
L'ho provato e ha funzionato abbastanza bene, quindi dopo un po 'di tempo, lo accetterò. Forse un giorno qualcuno scriverà un involucro, comunque. – chaosflaws
Funziona molto bene. Molte grazie ! – rvcristiand
- 1. barre del titolo iPad. Navbars o barre degli strumenti?
- 2. Ripristina barre degli strumenti VS 2008
- 3. Come sbloccare le barre degli strumenti in Eclipse 4.2 (Juno)
- 4. Posizionamento delle barre degli strumenti in Eclipse/RCP
- 5. Imposta menu per più barre degli strumenti su Android
- 6. Ios7 safari control top e bottom navigation/barre degli strumenti
- 7. Nascondi tutte le barre degli strumenti di Visual Studio?
- 8. android aggiungi due barre degli strumenti nella stessa attività?
- 9. Aggiunta di due barre degli strumenti AppCompat con temi diversi
- 10. C'è un modo per abilitare la barra degli strumenti in basso in un controller Vista Collection?
- 11. Barra degli strumenti personalizzabile in WPF
- 12. Le barre degli strumenti a tema Delphi possono avere divisori centrati tra i rispettivi pulsanti degli strumenti?
- 13. Il modo migliore per creare una barra degli strumenti in basso in Android.
- 14. Barra degli strumenti in DialogFragment
- 15. Come si creano barre degli strumenti che assomigliano a quelle in Keynote?
- 16. Posso usare CKEditor senza una barra degli strumenti?
- 17. Test degli strumenti di automazione per .NET
- 18. Come posso visualizzare la mia trama senza barre degli strumenti, in Lucido?
- 19. Esegui l'app Web standalone in Google Chrome senza bordi o barre degli strumenti
- 20. Controllo livello elemento sulle dimensioni degli elementi a nastro tramite nastro WPF (per .NET 4) e RibbonControlSizeDefinition
- 21. Barra degli strumenti di debug per ASP.NET
- 22. Toolbar gravità per barra degli strumenti estesa
- 23. Strumenti per la descrizione degli schemi JSON
- 24. Nascondi barra degli strumenti in WPF FlowDocument
- 25. MSAccess - Riduci a icona la barra degli strumenti OnLoad()?
- 26. Qual è il modo giusto per aggiungere una barra degli strumenti a un UITableView?
- 27. Android XML Esiste un modo per utilizzare lo spazio dei nomi degli strumenti con attributi personalizzati?
- 28. Passaggio da Eclipse a IntelliJ: esiste un modo per suddividere le finestre degli strumenti?
- 29. Barra degli strumenti trasparente per barra degli strumenti di compressione esaurita
- 30. Barre di scorrimento verticali e orizzontali su Tkinter Widget
Immagino che avresti bisogno di scrivere la tua libreria di wrapper attorno a 'tkribbon', poiché apparentemente nessuno l'ha ancora fatto. O scrivi del codice per simulare quel tipo di barra degli strumenti ... – nbro