我還沒有決定爲我的下一個項目使用什麼語言和工具。我很想使用Python,但我想實現功能區工具欄。 Tk已經完成了一些工作(http://www.ellogon.org/petasis/bibliography/Tcl2010/TkRibbon.pdf),但它看起來還沒有在tkinter中實現。有什麼我可以做得到這個工作嗎?有沒有在Tkinter中使用Ribbon工具欄的方法?
回答
您需要爲此創建一個包裝並獲取可以使用的二進制版本。我構建了這個與Python 3.4一起使用,並將其複製到tkribbon1.0-x86_64.zip。您應該將其解壓縮到Python/tcl子目錄中,以便python使用的tcl版本可以加載它。
的最小包裝看起來是這樣的:
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()
運行此使用內置的資源,tkribbon DLL,看起來像。複雜的一點是將一些Ribbon標記資源加載到DLL中進行加載。
您可以使用此示例從現有應用程序加載色帶。例如,python Ribbon.py c:\Windows\System32\mspaint.exe MSPAINT_RIBBON
將從mspaint加載功能區資源。這種情況下的資源名稱必須包含在內,因爲默認值是APPLICATION_RIBBON。爲了您自己的功能區,使用uicc生成一個.rc文件,然後rc /r file.rc
生成.res文件,最後link -dll -out:file.dll file.rc -noentry -machine:AMD64
似乎可以生成僅適用於此擴展的資源的DLL。
我已經嘗試過了,它的確工作很合理,所以經過一段時間後,我會接受它。不過,也許有人會寫封包。 – chaosflaws
這個作品非常漂亮。非常感謝 ! – rvcristiand
- 1. 工具欄沒有出現
- 2. 工具欄沒有顯示?
- 3. 有沒有人使用Ribbon控件?
- 4. 有沒有在F#中使用Matlab圖像處理工具箱的方法?
- 5. 沒有工具欄OS X Lion中
- 6. 工具欄在沒有顯示
- 7. 小工具沒有出現在簡單的tkinter應用程序
- 8. activity.setSupportActionBar(工具欄)沒有顯示工具欄
- 9. 打開的窗口沒有工具欄
- 10. ExtJS掩蓋沒有工具欄的TreePanel
- 11. 沒有BWToolkit的首選項工具欄
- 12. 有沒有第三方浮動工具欄?
- 13. 沒有隱藏在滾動中的Android應用工具欄
- 14. 使用GWT中的jQuery工具 - 有沒有辦法讓交流?
- 15. 在XAML中使用WPF工具包中的Ribbon控件
- 16. 工具欄沒有顯示在應用程序中
- 17. CRM 2011,沒有工具欄後UR16
- 18. 網站首頁沒有工具欄
- 19. InfoPath Designer 2013工具欄沒有反應
- 20. Android工具欄沒有海拔
- 21. popToRootViewControllerAnimated工具欄沒有正確更新
- 22. UiBarButtonItem沒有工具欄或導航條
- 23. 沒有顯示工具欄按鈕
- 24. 沒有顯示工具欄標題
- 25. Android模擬器沒有工具欄
- 26. Javascript window.open()工具欄=沒有運作
- 27. Window.open沒有導航工具欄
- 28. Eclipse Juno沒有調試工具欄?
- 29. 工具欄沒有得到填充
- 30. 工具欄字幕沒有出現
我想你會需要在'tkribbon'周圍編寫自己的包裝庫,因爲顯然沒有人做過它。或者寫一些代碼來模擬那種工具欄... – nbro