Skip to main content

extra for tkinter

Project description

tkadw

PyPI PyPI - Python Version PyPI - Wheel PyPI - License

使用tkinter.Canvas、tcltk扩展自绘技术实现的扩展界面

  • 轻量

仅用python代码实现,不掺杂大型数据文件

  • 支持圆角

运用DrawEngine引擎快速画出圆角矩形

  • 跨平台

tkinter.Canvas的跨平台性

安装

安装使用的途径仅在pypi.org平台上,所以可以直接使用pip

python -m pip install -U tkadw

Requirement already satisfied: tkadw in $pythonpath\lib\site-packages (0.1.4)

对于windows平台,安装时需勾选tcl/tk选项安装tkinter

对于linux平台,需自行查询python3-tk的安装步骤

包树视图

TKADW 源目录
├─advanced 高级包:用平台的接口实现更多扩展功能
├─canvas Canvas包:集合基本的绘画组件及额外组件库
│  ├─adwite 使用Canvas包设计的UI组件库
│  ├─atomize 使用Canvas包设计的UI组件库
│  └─fluent 使用Canvas包设计的UI组件库
└─tkite 其他根据gtk设计的UI组件库
   └─gtk 使用Canvas包设计的UI组件库

Canvas组件库

Canvas组件库是用tkinter.Canvas自绘技术进行绘制实现的基础组件库

主题配置

我提供了一个配置主题的方法palette,主题设置为字典类型。

AdwDrawButton的样式

{
    "button": {  # 类
        "back": "#353535",  # 背景颜色
        "border": "#454545",  # 边框颜色
        "text_back": "#ffffff",  # 文字颜色
        "border_width": 1,  # 边框宽带

        "active": {  # 状态:被鼠标碰到
            "back": "#3a3a3a",  # 背景颜色
            "border": "#454545",  # 边框颜色
            "text_back": "#cecece",  # 文字颜色
            "border_width": 1,  # 边框宽带
        },

        "pressed": {  # 状态:被鼠标按下
            "back": "#2f2f2f",  # 背景颜色
            "border": "#454545",  # 边框颜色
            "text_back": "#9a9a9a",  # 文字颜色
            "border_width": 1,  # 边框宽带
        },
    }
}

如果想要制作基于Canvas组件的扩展组件,可以继承default_palette方法,在此会将设置为默认样式,以GTkButton为例

from tkadw import AdwDrawRoundButton3


class GTkButton(AdwDrawRoundButton3):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

    def default_palette(self):
        self.palette_gtk_light()

    def palette_gtk_light(self):
        self.palette(
            {
                "button": {
                    "radius": 11,
                    "back": "#f6f5f4",
                    "border": "#ccc6c1",
                    "text_back": "#2e3436",
                    "border_width": 1.3,

                    "active": {
                        "back": "#f8f8f7",
                        "border": "#dad6d2",
                        "text_back": "#2e3436",
                        "border_width": 1.3,
                    },

                    "pressed": {
                        "back": "#dad6d2",
                        "border": "#dad6d2",
                        "text_back": "#2e3436",
                        "border_width": 1.3,
                    },
                }
            }

GTk组件库

GTk组件库使用tkadw.canvas设计的UI组件库。我为每个组件都额外设计了Dark暗黑组件。

1.png

暂无macOS下的演示图,因为作者是个学生党,买不起苹果电脑

GTkButton 按钮组件

示例

from tkinter import Tk
from tkadw import GTkButton, GTkDarkButton, GTkFrame, GTkDarkFrame

root = Tk()
root.configure(background="#1e1e1e")

frame = GTkFrame(root)

button1 = GTkButton(frame.frame, text="GTkButton")
button1.pack(fill="x", ipadx=5, padx=5, pady=5)

frame.pack(fill="both", expand="yes", side="right")

frame2 = GTkDarkFrame(root)

button2 = GTkDarkButton(frame2.frame, text="GTkDarkButton")
button2.pack(fill="x", ipadx=5, padx=5, pady=5)

frame2.pack(fill="both", expand="yes", side="left")

root.mainloop()

2.gif

GTkEntry 输入框组件

示例

from tkinter import Tk
from tkadw import GTkEntry, GTkDarkEntry, GTkFrame, GTkDarkFrame

root = Tk()
root.configure(background="#1e1e1e")

frame = GTkFrame(root)

entry1 = GTkEntry(frame.frame)
entry1.pack(fill="x", ipadx=5, padx=5, pady=5)

frame.pack(fill="both", expand="yes", side="right")

frame2 = GTkDarkFrame(root)

entry2 = GTkDarkEntry(frame2.frame)
entry2.pack(fill="x", ipadx=5, padx=5, pady=5)

frame2.pack(fill="both", expand="yes", side="left")

root.mainloop()

3.gif

GTkTextBox 文本输入框组件

示例

from tkinter import Tk
from tkadw import GTkFrame, GTkDarkFrame, GTkTextBox, GTkDarkTextBox

root = Tk()
root.configure(background="#1f1f1f")

frame = GTkFrame(root)

textbox1 = GTkTextBox(frame.frame)
textbox1.pack(fill="x", ipadx=5, padx=5, pady=5)

frame.pack(fill="both", expand="yes", side="right")

frame2 = GTkDarkFrame(root)

textbox2 = GTkDarkTextBox(frame2.frame)
textbox2.pack(fill="x", ipadx=5, padx=5, pady=5)

frame2.pack(fill="both", expand="yes", side="left")

root.mainloop()

4.gif

更新记录

<=0.2.0:

作者都没记下来

0.2.0:

201主题配置

202改变修复AdwDrawEntryEntry组件在Linux平台下出现边框

203修复各别解释器类似注释的错误

0.2.1

211扩充README文档

212新增组件Adw

213删除多余文件

0.2.2

221扩展额外界面库BiliBili,根据BiliBili桌面版设计

222修复palette修改完后没完全修改配色的问题

223扩展额外界面库Win11,根据Sunvalley设计

224修复AdwDrawButton类边框遮挡的问题

0.2.3

231 AdwDrawEngine添加绘画渐变图形的方法

232扩展额外界面库Fluent,作者制作设计

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tkadw-0.2.3.tar.gz (133.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tkadw-0.2.3-py3-none-any.whl (83.1 kB view details)

Uploaded Python 3

File details

Details for the file tkadw-0.2.3.tar.gz.

File metadata

  • Download URL: tkadw-0.2.3.tar.gz
  • Upload date:
  • Size: 133.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.2 CPython/3.11.2 Windows/10

File hashes

Hashes for tkadw-0.2.3.tar.gz
Algorithm Hash digest
SHA256 20008a099e389254527df091f14e16df3920f2b8f1e3b6f4358e644ae4bf1c26
MD5 3e5fe6f0cae6840f711e9600afb49db8
BLAKE2b-256 3590d95fdf9d9bc5cbba5242302cd27835c54ab1e8298096299a9640762c8989

See more details on using hashes here.

File details

Details for the file tkadw-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: tkadw-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 83.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.2 CPython/3.11.2 Windows/10

File hashes

Hashes for tkadw-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 fd400b2a16e496969db3768886b867c808727e53a67562e4886643fb4c2c48f8
MD5 7493373aac9294a37007c247b681851e
BLAKE2b-256 7c6fe512d72fba7b68cc3236899836bbbcd35e62437391b518fce008b65585c9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page