代码拉取完成,页面将自动刷新
import ctypes
from tkinter import *
from PIL import Image, ImageTk
from ImageCanvas import ImageCanvas
import ToolFrame as TF
import OperationFrame as OF
import VariableFrame as VF
import BottomFrame as BF
from DrawFrame import DrawFrame
from FilterFrame import FilterFrame
from GeometryFrame import GeometryFrame
from IconFrame import IconFrame
from VisualFrame import VisualFrame
# from CertificateFrame import CertificateFrame
from SplitFrame import SplitFrame
from PdfFrame import PdfFrame
#定义全局变量 or 常量
#region UI widget
win = None
canvFrm = None
canvas = None
operFrm = None
toolBar = None
varFrms = {}
bottomFrm = None
#endregion UI widget
#region UI size
winSize = {"w":1250, "h":655}
gap = {"h":10, "v":10}
leftWidth = 105
topHeight = 35
rightWidth = 260
bottomHeight = 30
scrollBarWidth = 20
rightFrmPosition = {"x":0, "y":0}
#endregion UI size
#region UI color
#黑色模式
bg = "#758090"
fg = "#f0f0f0"
radioSelectColor = "#8590a0"
#白色模式
# bg = "#e6e6e6"
# fg = "#010101"
# radioSelectColor = "#d6d6d6"
canvasbg = "#ffffff"
#endregion UI color
#region font
# font = ("Times", 12, "bold")
# font = ("Times", 13)
# font = ("华文宋体", 13)
# font = ("华文隶书", 14)
# font = ("微软雅黑字体", 12, "bold")
# font = ("微软雅黑字体", 14)
# font = ("楷体", 13, "bold") #建议
font_big = ("楷体", 18)
font_middle = ("楷体", 16)
font_small = ("楷体", 14)
font = font_small
#endregion font
#region other
bg_img = None
soft_name = "ImageTool"
#endregion other
#region path
viewBmp= '@img\\onePixel.xbm'
logoPath = "img\\logo.jpg"
icoPath = "img\\logo.ico"
canvasImg = "img\\canvas_bg3.png"
# iconPath = "icon\\"
#endregion path
def initView():
global win, canvFrm, canvas, operFrm, toolBar, varFrms, bg_img, bottomFrm
win = Tk()
beautify(win)
win.geometry("1250x655+0+0")
# win.resizable(0, 0)
win.bind("<Configure>", onSizeChange)
win.title(soft_name)
canvFrm = Frame(win)
canv = ImageCanvas(canvFrm)
canvas = canv
varFrms["绘制图形"] = DrawFrame(canv, win)
varFrms["添加滤镜"] = FilterFrame(canv, win)
varFrms["旋转剪切"] = GeometryFrame(canv, win)
varFrms["添加图标"] = IconFrame(canv, win)
varFrms["视觉效果"] = VisualFrame(canv, win)
# varFrms["证件照"] = CertificateFrame(canv, win)
varFrms["背景替换"] = SplitFrame(canv, win)
varFrms["PDF转图片"] = PdfFrame(canv, win)
operFrm = OF.OperationFrame(canv, win)
operFrm.place(x=0, y=0)
operFrm.replace(varFrms["背景替换"])
toolBar = TF.ToolFrame(canv, win)
toolBar.place(x=operFrm["width"], y=0)
canv.pack(side=LEFT, expand=True, fill=BOTH)
canvFrm.place(x=operFrm["width"] + 15, y=toolBar["height"] + 10)
bottomFrm = BF.BottomFrame(canv, win)
bottomFrm.place(x=operFrm["width"], y=winSize["h"] - bottomHeight)
# win_w, win_h = win.maxsize()
# win.geometry("{}x{}+0+0".format(win_w, win_h))
win.wm_state('zoomed')
# bg_img = ImageTk.PhotoImage(Image.open(canvasImg))
# canv.create_image((0, 0), image=bg_img, anchor="nw")
win.geometry("{}x{}+0+0".format(winSize["w"], winSize["h"]))
win.iconbitmap(icoPath)
pass
def onSizeChange(event):
if isinstance(event.widget, Tk):
resize(event.width, event.height)
pass
def resize(width, height):
winSize["w"] = width
winSize["h"] = height
operFrm.configure(height=winSize["h"])
toolBar.configure(width=winSize["w"])
rightFrmPosition["x"] = winSize["w"] - rightWidth
rightFrmPosition["y"] = topHeight + gap["v"]
for key in varFrms:
varFrms[key].configure(height=winSize["h"]-topHeight-gap["v"])
varFrms[key].onSizeChanged(rightWidth, winSize["h"]-topHeight-gap["v"])
if operFrm.varFrm is not None:
operFrm.varFrm.place(x=rightFrmPosition["x"], y=rightFrmPosition["y"])
canvas.configure(width=winSize["w"]-leftWidth-rightWidth-2*gap["h"]-scrollBarWidth,
height=winSize["h"]-topHeight-bottomHeight-2*gap["v"]-scrollBarWidth)
varFrms["添加图标"].iconCanvas.configure(height=winSize["h"]-topHeight-gap["v"])
bottomFrm.configure(width=winSize["w"]-leftWidth-rightWidth,
height=bottomHeight)
bottomFrm.place(x=operFrm["width"], y=winSize["h"]-bottomHeight)
pass
def beautify(win):
"""
设置窗口分辨率,避免模糊
"""
global font
ctypes.windll.shcore.SetProcessDpiAwareness(1)
ScaleFactor = ctypes.windll.shcore.GetScaleFactorForDevice(0)
# win.tk.call('tk', 'scaling', ScaleFactor / 75)
win.tk.call('tk', 'scaling', ScaleFactor/100)
if ScaleFactor > 100:
font = font_small
elif ScaleFactor == 100:
font = font_middle
else:
font = font_big
pass
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。