完成icon
This commit is contained in:
parent
8ca2a6a5d1
commit
f53c349ea4
|
@ -0,0 +1 @@
|
||||||
|
*.pack filter=lfs diff=lfs merge=lfs -text
|
77
debug.py
77
debug.py
|
@ -2,8 +2,8 @@ import magictk
|
||||||
import random
|
import random
|
||||||
from multiprocessing import Process
|
from multiprocessing import Process
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
mwin = magictk.Window()
|
win = magictk.Window()
|
||||||
win = magictk.Container(mwin, h=10000, container_h=500)
|
# win = magictk.Container(mwin, h=10000, container_h=500)
|
||||||
|
|
||||||
frame = magictk.Frame(win)
|
frame = magictk.Frame(win)
|
||||||
magictk.Button(frame, text="Default",
|
magictk.Button(frame, text="Default",
|
||||||
|
@ -29,7 +29,7 @@ if __name__ == "__main__":
|
||||||
for i in range(1, 10):
|
for i in range(1, 10):
|
||||||
obj1.addmenu(f"Option {i}", lambda s, t: print(i))
|
obj1.addmenu(f"Option {i}", lambda s, t: print(i))
|
||||||
magictk.Button(frame2, text="Menu",
|
magictk.Button(frame2, text="Menu",
|
||||||
func=lambda s: magictk.Menu(mwin, menuobj=obj1), w=60).pack()
|
func=lambda s: magictk.Menu(win, menuobj=obj1), w=60).pack()
|
||||||
frame2.pack()
|
frame2.pack()
|
||||||
|
|
||||||
frame3 = magictk.Frame(win)
|
frame3 = magictk.Frame(win)
|
||||||
|
@ -44,25 +44,36 @@ if __name__ == "__main__":
|
||||||
group=groups).pack(side='left')
|
group=groups).pack(side='left')
|
||||||
frame3.pack()
|
frame3.pack()
|
||||||
|
|
||||||
frame4 = magictk.Frame(win)
|
|
||||||
magictk.Checkbox(frame4, text="Option 1", w=100).pack(side='left')
|
|
||||||
magictk.Checkbox(frame4, text="Option 2", w=100).pack(side='left')
|
|
||||||
frame4.pack()
|
|
||||||
|
|
||||||
frame5 = magictk.Frame(win)
|
frame5 = magictk.Frame(win)
|
||||||
pb = magictk.ProgressBar(frame5)
|
magictk.Checkbox(frame5, text="Option 1", w=100).pack(side='left')
|
||||||
pb.pack(side='left')
|
magictk.Checkbox(frame5, text="Option 2", w=100).pack(side='left')
|
||||||
magictk.Button(frame5, text="+",
|
|
||||||
func=lambda s: pb.add_progress(0.1), w=30).pack(side='left')
|
|
||||||
magictk.Button(frame5, text="-",
|
|
||||||
func=lambda s: pb.add_progress(-0.1), w=30).pack(side='left')
|
|
||||||
magictk.Button(frame5, text="++",
|
|
||||||
func=lambda s: pb.add_progress(0.3), w=40).pack(side='left')
|
|
||||||
magictk.Button(frame5, text="--",
|
|
||||||
func=lambda s: pb.add_progress(-0.3), w=40).pack(side='left')
|
|
||||||
frame5.pack()
|
frame5.pack()
|
||||||
|
|
||||||
|
frame4 = magictk.Frame(win)
|
||||||
|
magictk.Icon(frame4, size=12).pack(side='left')
|
||||||
|
magictk.Icon(frame4, size=16).pack(side='left')
|
||||||
|
magictk.Icon(frame4, size=32).pack(side='left')
|
||||||
|
magictk.Icon(frame4, size=48).pack(side='left')
|
||||||
|
magictk.Button(frame4,
|
||||||
|
func=lambda s: print("Icon Btn 1"), iconname="apple", iconsize=16, w=32).pack(side='left')
|
||||||
|
magictk.ButtonFill(frame4, color_type="primary",
|
||||||
|
func=lambda s: print("Icon Btn 2"), iconname="apple", iconsize=16, w=32).pack(side='left')
|
||||||
|
frame4.pack()
|
||||||
|
|
||||||
frame6 = magictk.Frame(win)
|
frame6 = magictk.Frame(win)
|
||||||
|
pb = magictk.ProgressBar(frame6)
|
||||||
|
pb.pack(side='left')
|
||||||
|
magictk.Button(frame6, text="+",
|
||||||
|
func=lambda s: pb.add_progress(0.1), w=30).pack(side='left')
|
||||||
|
magictk.Button(frame6, text="-",
|
||||||
|
func=lambda s: pb.add_progress(-0.1), w=30).pack(side='left')
|
||||||
|
magictk.Button(frame6, text="++",
|
||||||
|
func=lambda s: pb.add_progress(0.3), w=40).pack(side='left')
|
||||||
|
magictk.Button(frame6, text="--",
|
||||||
|
func=lambda s: pb.add_progress(-0.3), w=40).pack(side='left')
|
||||||
|
frame6.pack()
|
||||||
|
|
||||||
|
frame7 = magictk.Frame(win)
|
||||||
|
|
||||||
def kaoji():
|
def kaoji():
|
||||||
def test(*args):
|
def test(*args):
|
||||||
|
@ -78,30 +89,30 @@ if __name__ == "__main__":
|
||||||
del p
|
del p
|
||||||
ts = Process(target=test)
|
ts = Process(target=test)
|
||||||
ts.start()
|
ts.start()
|
||||||
magictk.Button(frame6, text="Performance Test",
|
magictk.Button(frame7, text="Performance Test",
|
||||||
func=lambda s: kaoji(), w=130).pack(side='left')
|
func=lambda s: kaoji(), w=130).pack(side='left')
|
||||||
frame6.pack()
|
|
||||||
|
|
||||||
frame7 = magictk.Frame(win)
|
|
||||||
magictk.Entry(frame7, w=200).pack(side='left')
|
|
||||||
frame7.pack()
|
frame7.pack()
|
||||||
|
|
||||||
frame8 = magictk.Container(win, h=200, container_h=30*6*5)
|
frame8 = magictk.Frame(win)
|
||||||
|
magictk.Entry(frame8, w=200).pack(side='left')
|
||||||
|
frame8.pack()
|
||||||
|
|
||||||
|
frame9 = magictk.Container(win, h=200, container_h=30*6*5)
|
||||||
for i in range(5):
|
for i in range(5):
|
||||||
magictk.Button(frame8, text="Default",
|
magictk.Button(frame9, text="Default",
|
||||||
func=lambda s: print("Btn 1")).pack()
|
func=lambda s: print("Btn 1")).pack()
|
||||||
magictk.ButtonFill(frame8, text="Primary",
|
magictk.ButtonFill(frame9, text="Primary",
|
||||||
func=lambda s: print("Btn 2")).pack()
|
func=lambda s: print("Btn 2")).pack()
|
||||||
magictk.ButtonFill(frame8, color_type="success", text="Success",
|
magictk.ButtonFill(frame9, color_type="success", text="Success",
|
||||||
func=lambda s: print("Btn 3")).pack()
|
func=lambda s: print("Btn 3")).pack()
|
||||||
magictk.ButtonFill(frame8, color_type="info", text="Info",
|
magictk.ButtonFill(frame9, color_type="info", text="Info",
|
||||||
func=lambda s: print("Btn 4")).pack()
|
func=lambda s: print("Btn 4")).pack()
|
||||||
magictk.ButtonFill(frame8, color_type="warning", text="Warning",
|
magictk.ButtonFill(frame9, color_type="warning", text="Warning",
|
||||||
func=lambda s: print("Btn 5")).pack()
|
func=lambda s: print("Btn 5")).pack()
|
||||||
magictk.ButtonFill(frame8, color_type="danger", text="Danger",
|
magictk.ButtonFill(frame9, color_type="danger", text="Danger",
|
||||||
func=lambda s: print("Btn 6")).pack()
|
func=lambda s: print("Btn 6")).pack()
|
||||||
frame8.pack(expand=True, fill="x")
|
frame9.pack(expand=True, fill="x")
|
||||||
|
|
||||||
win.pack(expand=True, fill="x", anchor="n")
|
# win.pack(expand=True, fill="x", anchor="n")
|
||||||
|
|
||||||
mwin.mainloop()
|
win.mainloop()
|
||||||
|
|
|
@ -8,3 +8,4 @@ from magictk.select import Select
|
||||||
from magictk.frame import Frame, Container
|
from magictk.frame import Frame, Container
|
||||||
from magictk.entry import Entry
|
from magictk.entry import Entry
|
||||||
from magictk.scrollbar import ScrollBar
|
from magictk.scrollbar import ScrollBar
|
||||||
|
from magictk.icon import Icon
|
||||||
|
|
|
@ -68,6 +68,42 @@ class Button:
|
||||||
x_n += 1
|
x_n += 1
|
||||||
y_n += 1
|
y_n += 1
|
||||||
|
|
||||||
|
def _draw_icon(self, x, y, name, size, **kwargs):
|
||||||
|
border_info = border_info = json.loads(photoload.loadres(
|
||||||
|
f"icon/{name}@{size}"))
|
||||||
|
y_n = 0
|
||||||
|
for i in border_info:
|
||||||
|
x_n = 0
|
||||||
|
for j in i:
|
||||||
|
px = x+y_n+1
|
||||||
|
py = y+x_n+1
|
||||||
|
lcolor = j
|
||||||
|
g_color = color_tmpl.mix_color(
|
||||||
|
self.color["regular_text"], self.color["background"], int((1-lcolor/255)*1000)/1000)
|
||||||
|
f_color = color_tmpl.mix_color(
|
||||||
|
self.color[self._color_fg], self.color[self._color_fg2], int((1-lcolor/255)*1000)/1000)
|
||||||
|
h_color = color_tmpl.mix_color(
|
||||||
|
self.color[self._color_fg], self.color[self._color_fg2], int((1-lcolor/255)*1000)/1000)
|
||||||
|
|
||||||
|
obj = self.canvas.create_rectangle(
|
||||||
|
px, py, px, py, width=0, fill=g_color)
|
||||||
|
|
||||||
|
def update_color(obj, g_color, f_color, h_color):
|
||||||
|
if (self._is_hover == 2):
|
||||||
|
self.canvas.itemconfig(
|
||||||
|
obj, fill=h_color)
|
||||||
|
else:
|
||||||
|
self.canvas.itemconfig(
|
||||||
|
obj, fill=color_tmpl.mix_color(g_color, f_color, self.hover_mode))
|
||||||
|
|
||||||
|
self._fill_func.append(update_color)
|
||||||
|
self._fill_gc.append(g_color)
|
||||||
|
self._fill_fc.append(f_color)
|
||||||
|
self._fill_hc.append(h_color)
|
||||||
|
self._fill_obj.append(obj)
|
||||||
|
x_n += 1
|
||||||
|
y_n += 1
|
||||||
|
|
||||||
def _update_color(self):
|
def _update_color(self):
|
||||||
n = 0
|
n = 0
|
||||||
for i in self._fill_func:
|
for i in self._fill_func:
|
||||||
|
@ -75,7 +111,7 @@ class Button:
|
||||||
self._fill_fc[n], self._fill_hc[n])
|
self._fill_fc[n], self._fill_hc[n])
|
||||||
n += 1
|
n += 1
|
||||||
|
|
||||||
def __init__(self, master=None, root_anim=None, w=80, h=30, text="Button", func=lambda s: print("Press"), color_list: dict = None, _set_defaultcolor=None):
|
def __init__(self, master=None, root_anim=None, w=80, h=30, text="Button", func=lambda s: print("Press"), color_list: dict = None, _set_defaultcolor=None, iconname="", iconsize=24):
|
||||||
global use_font
|
global use_font
|
||||||
use_font = fontconfig.getfont()
|
use_font = fontconfig.getfont()
|
||||||
self._fill_obj = []
|
self._fill_obj = []
|
||||||
|
@ -107,7 +143,13 @@ class Button:
|
||||||
self.canvas = tkinter.Canvas(
|
self.canvas = tkinter.Canvas(
|
||||||
master, bg=self.color["background"], width=self.w, height=self.h, borderwidth=0, bd=0, highlightcolor=self.color["background"], highlightthickness=0)
|
master, bg=self.color["background"], width=self.w, height=self.h, borderwidth=0, bd=0, highlightcolor=self.color["background"], highlightthickness=0)
|
||||||
|
|
||||||
|
if (iconname != ''):
|
||||||
|
self.text = ""
|
||||||
self._draw()
|
self._draw()
|
||||||
|
if (iconname != ''):
|
||||||
|
self.size = iconsize
|
||||||
|
self._draw_icon(self.w//2-self.size//2, self.h //
|
||||||
|
2-self.size//2, iconname, iconsize)
|
||||||
self._update_color()
|
self._update_color()
|
||||||
self._bind_event()
|
self._bind_event()
|
||||||
self.bind_anim()
|
self.bind_anim()
|
||||||
|
@ -252,6 +294,42 @@ class Button:
|
||||||
|
|
||||||
class ButtonFill(Button):
|
class ButtonFill(Button):
|
||||||
|
|
||||||
|
def _draw_icon(self, x, y, name, size, **kwargs):
|
||||||
|
border_info = border_info = json.loads(photoload.loadres(
|
||||||
|
f"icon/{name}@{size}"))
|
||||||
|
y_n = 0
|
||||||
|
for i in border_info:
|
||||||
|
x_n = 0
|
||||||
|
for j in i:
|
||||||
|
px = x+y_n+1
|
||||||
|
py = y+x_n+1
|
||||||
|
lcolor = j
|
||||||
|
g_color = color_tmpl.mix_color(
|
||||||
|
"#FFFFFF", self.color[self._color_bd], int((1-lcolor/255)*1000)/1000)
|
||||||
|
f_color = color_tmpl.mix_color(
|
||||||
|
"#FFFFFF", self.color[self._color_fg1], int((1-lcolor/255)*1000)/1000)
|
||||||
|
h_color = color_tmpl.mix_color(
|
||||||
|
"#FFFFFF", self.color[self._color_fg2], int((1-lcolor/255)*1000)/1000)
|
||||||
|
|
||||||
|
obj = self.canvas.create_rectangle(
|
||||||
|
px, py, px, py, width=0, fill=g_color)
|
||||||
|
|
||||||
|
def update_color(obj, g_color, f_color, h_color):
|
||||||
|
if (self._is_hover == 2):
|
||||||
|
self.canvas.itemconfig(
|
||||||
|
obj, fill=h_color)
|
||||||
|
else:
|
||||||
|
self.canvas.itemconfig(
|
||||||
|
obj, fill=color_tmpl.mix_color(g_color, f_color, self.hover_mode))
|
||||||
|
|
||||||
|
self._fill_func.append(update_color)
|
||||||
|
self._fill_gc.append(g_color)
|
||||||
|
self._fill_fc.append(f_color)
|
||||||
|
self._fill_hc.append(h_color)
|
||||||
|
self._fill_obj.append(obj)
|
||||||
|
x_n += 1
|
||||||
|
y_n += 1
|
||||||
|
|
||||||
def _draw_corner(self, r_x, r_y, x, y, **kwargs):
|
def _draw_corner(self, r_x, r_y, x, y, **kwargs):
|
||||||
border_info = json.loads(photoload.loadres("buttonborder"))
|
border_info = json.loads(photoload.loadres("buttonborder"))
|
||||||
y_n = 0
|
y_n = 0
|
||||||
|
@ -308,7 +386,7 @@ class ButtonFill(Button):
|
||||||
x_n += 1
|
x_n += 1
|
||||||
y_n += 1
|
y_n += 1
|
||||||
|
|
||||||
def __init__(self, master=None, root_anim=None, color_type="primary", w=80, h=30, text="Button", func=lambda s: print("Press"), color_list: dict = None, _dis_color=None):
|
def __init__(self, master=None, root_anim=None, color_type="primary", w=80, h=30, text="Button", func=lambda s: print("Press"), color_list: dict = None, _dis_color=None, iconname="", iconsize=24):
|
||||||
if (_dis_color is None):
|
if (_dis_color is None):
|
||||||
self._color_bd = color_type
|
self._color_bd = color_type
|
||||||
self._color_bg = color_type
|
self._color_bg = color_type
|
||||||
|
@ -319,4 +397,4 @@ class ButtonFill(Button):
|
||||||
self._color_fg2 = color_type+"_dark"
|
self._color_fg2 = color_type+"_dark"
|
||||||
self._color_text = "#FFFFFF"
|
self._color_text = "#FFFFFF"
|
||||||
super().__init__(master=master, root_anim=root_anim, w=w, h=h,
|
super().__init__(master=master, root_anim=root_anim, w=w, h=h,
|
||||||
text=text, color_list=color_list, func=func, _set_defaultcolor=True)
|
text=text, color_list=color_list, func=func, _set_defaultcolor=True, iconname=iconname, iconsize=iconsize)
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
import json
|
||||||
|
import tkinter
|
||||||
|
from tkinter import ttk
|
||||||
|
|
||||||
|
from magictk import color_tmpl
|
||||||
|
from magictk import photoload
|
||||||
|
from magictk import fontconfig
|
||||||
|
|
||||||
|
|
||||||
|
class Icon:
|
||||||
|
color = color_tmpl.default_color
|
||||||
|
size = 12
|
||||||
|
iconname = "apple"
|
||||||
|
setcolor = "primary"
|
||||||
|
|
||||||
|
def _draw(self, x, y, **kwargs):
|
||||||
|
border_info = json.loads(photoload.loadres(
|
||||||
|
f"icon/{self.iconname}@{self.size}"))
|
||||||
|
y_n = 0
|
||||||
|
for i in border_info:
|
||||||
|
x_n = 0
|
||||||
|
for j in i:
|
||||||
|
px = x+x_n+1
|
||||||
|
py = y+y_n+1
|
||||||
|
if (j < 0):
|
||||||
|
lcolor = -j
|
||||||
|
else:
|
||||||
|
lcolor = j
|
||||||
|
if (self.setcolor[0] == '#'):
|
||||||
|
g_color = color_tmpl.mix_color(
|
||||||
|
self.setcolor, self.color["background"], int((1-lcolor/255)*1000)/1000)
|
||||||
|
else:
|
||||||
|
g_color = color_tmpl.mix_color(
|
||||||
|
self.color[self.setcolor], self.color["background"], int((1-lcolor/255)*1000)/1000)
|
||||||
|
|
||||||
|
obj = self.canvas.create_rectangle(
|
||||||
|
py, px, py, px, width=0, fill=g_color)
|
||||||
|
x_n += 1
|
||||||
|
y_n += 1
|
||||||
|
|
||||||
|
def __init__(self, master=None, size=16, iconname="apple", setcolor="regular_text", color_list: dict = None, _set_defaultcolor=None):
|
||||||
|
self.size = size
|
||||||
|
self.iconname = iconname
|
||||||
|
self.setcolor = setcolor
|
||||||
|
self.canvas = tkinter.Canvas(
|
||||||
|
master, bg=self.color["background"], width=size+2, height=size+2, borderwidth=0, bd=0, highlightcolor=self.color["background"], highlightthickness=0)
|
||||||
|
|
||||||
|
self._draw(0, 0)
|
||||||
|
|
||||||
|
def pack(self, *args, **kwargs):
|
||||||
|
self.canvas.pack(*args, **kwargs)
|
||||||
|
|
||||||
|
def grid(self, *args, **kwargs):
|
||||||
|
self.canvas.grid(*args, **kwargs)
|
||||||
|
|
||||||
|
def place(self, *args, **kwargs):
|
||||||
|
self.canvas.place(*args, **kwargs)
|
Loading…
Reference in New Issue