📜  Tk-Mega Widgets(1)

📅  最后修改于: 2023-12-03 15:35:20.351000             🧑  作者: Mango

Tk-Mega Widgets

Tk-Mega Widgets是一个Python GUI编程中的的轻量级扩展库,为开发人员提供了更为丰富的Tkinter超大组件,使得程序员能够快速构建出多种复杂的GUI程序。

特点
  • 提供80+种界面控件,更全面的满足了开发人员的需求
  • 可以进行主题定制,根据不同的业务场景自定义设置
  • 支持国际化,便于跨语种环境的GUI程序开发
  • 强大的布局管理,使得程序界面可以随意地进行布局组合
控件列表

以下是Tk-Mega Widgets库的部分控件类型,其中控件类型当然远不止以下:

  • Balloon - 给控件添加帮助提示和信息
  • ComboSelectBox - 具有下拉菜单的文本框
  • Counter - 计数器,用于记录计数器数值并控制操作
  • CustomDialog - 自定义带有多种信息的弹出框
  • DraggableListBox - 可拖拽列表框
  • FancyListbox - 多种样式选择框
  • IconMenu - 带图标的菜单
  • MultiListbox - 多选列表框
  • NoteBook - 选项卡标签页
  • RadiobuttonGroup - 单选按钮组
  • RangeSlider - 范围滑块
  • ScrollableFrame - 可滚动面板
  • ShuttleListbox - 可两端移动的列表选择框
  • SpeedDial - 快速拨号窗口控件
  • TableList - 带分页和排序的表格
  • WizardDialog - 向导式对话框

等等。

安装

使用以下命令可以方便地安装Tk-Mega Widgets库:

pip install tk-mega-widgets

注意,Tk-Mega Widgets库项目已经很久没有更新了,最后一次更新也是在2013年。如果你需要处理更为复杂的界面,推荐使用更为成熟的GUI库,比如PyQt或wxPython。

基本用法

以下是Tk-Mega Widgets库的一个简单示例程序,用于展示清单列表控件:

import tkinter as tk
import tkFont
from tk_mega_widgets import (FancyListbox)

class App():
    def __init__(self, master):
        self.master = master
        self.custom_style = tkFont.Font(family='Helvetica', size=12)
        self.control_frame = tk.Frame(master)
        self.control_frame.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
        self.custom_list = FancyListbox(
            self.control_frame,
            columns=(
                'Name', 'Quantity', 'Price',
                'Subtotal'
            ), empty_list_text='Your list is empty',
            autosort_enabled=True,
        )
        self.custom_list.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
        self.custom_list.add_item(['UI Prototype', '4', '$9.00', '$36.00'])
        self.custom_list.add_item(['Backend', '1', '$150.00', '$150.00'])
        self.custom_list.add_item(['API Implementation', '2', '$22.00', '$44.00'])

if __name__ == '__main__':
    root = tk.Tk()
    app = App(root)
    root.mainloop()
效果展示

控件效果如下:

image

主题

Tk-Mega Widgets库支持主题定制。你可以选择或创建你自己的主题。以下是创建并加载一个主题的示例代码:

from MegaWidget import MegaApplication
from MegaWidget import StyleManager
from tkFont import Font

class App():
    def __init__(self):
        self.root = MegaApplication()

        # Define our custom font
        font = Font(family='Helvetica', size=12)

        # Set custom primary theme colors
        self.root.style_manager.primary_color = '#3498db'
        self.root.style_manager.secondary_color = '#ffffff'
        self.root.style_manager.bg_color = '#F5F5F5'
        
        # Set custom style attributes
        self.root.style_manager.configure(
            'Label',
            font=font,
            foreground=self.root.style_manager.primary_color
        )
        self.root.style_manager.configure(
            'Entry',
            foreground=self.root.style_manager.primary_color,
            highlightcolor=self.root.style_manager.primary_color,
            font=font,
            relief='groove'
        )

if __name__ == '__main__':
    app = App()
    app.root.mainloop()

国际化

Tk-Mega Widgets库对于国际化的支持十分优秀,包括了对多国语言和体系的支持。

以下是如何使用Tk-Mega Widgets实现国际化:

from __future__ import print_function
from builtins import str, bytes

from MegaWidget import MegaApplication
from MegaWidget.util.lang import locale
from MegaWidget import StyleManager
from tkFont import Font

class App():
    def __init__(self):
        self.root = MegaApplication()

        # Define our custom font
        font = Font(family='Helvetica', size=12)

        # Set custom primary theme colors
        self.root.style_manager.primary_color = '#3498db'
        self.root.style_manager.secondary_color = '#ffffff'
        self.root.style_manager.bg_color = '#F5F5F5'
        
        # Set custom style attributes
        self.root.style_manager.configure(
            'Label',
            font=font,
            foreground=self.root.style_manager.primary_color
        )
        self.root.style_manager.configure(
            'Entry',
            foreground=self.root.style_manager.primary_color,
            highlightcolor=self.root.style_manager.primary_color,
            font=font,
            relief='groove'
        )

    def run(self):
        self.root.mainloop()

if __name__ == '__main__':
    app = App()

    # Load language pack
    try:
        app.lang = locale.load('zh_CN')
    except locale.LanguageError:
        app.lang = locale.load('en_US')

    # Layout
    for lang in app.lang.keys():
        app.root.style_manager.configure(
            'Label',
            text=str(app.lang[lang]['label'])
        )

    app.run()
结语

Tk-Mega Widgets库为Python GUI程序员提供了许多丰富的控件,使得程序员在快速构建GUI程序时更加方便快捷,特别是在设计复杂的界面布局时,在Tk-Mega Widgets库的辅助下可以使得程序更为清新明了。

但同时也需要注意,Tk-Mega Widgets库项目非常的老旧,自2013年以来已经没有了更新,可能存在多种不兼容、未修复的问题,因此,为保证程序的稳定,还是推荐大家使用更新的GUI库。