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类边框遮挡的问题

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.2.tar.gz (85.4 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.2-py3-none-any.whl (43.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: tkadw-0.2.2.tar.gz
  • Upload date:
  • Size: 85.4 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.2.tar.gz
Algorithm Hash digest
SHA256 116689c288feb71c02b06f8aee06143019512b8df8e6aa14999ce1b92957991b
MD5 a98f80d641b93e24c6fd58f6e4684af3
BLAKE2b-256 a0d1e294fb3bea5d702d5e5b3fd54bbc292405ad009a7d1d0ce9cd47ac44556a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tkadw-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 43.7 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1698edb9baab8d138024a3dd065c10cf30b9289eebea5a470f21b2e13a28b21b
MD5 20f820ab796cf4c40de908947ca1a118
BLAKE2b-256 91ead184baeae7e05bbfc9ef7ca85fff0bd58d7192c8de1b778a81457784fdff

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