简单python界面设计(tkinter库)

导读:本篇文章讲解 简单python界面设计(tkinter库),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

简单python界面设计(tkinter库)

做这个界面初衷是为舵机做一个控制界面,这个文件被遗弃在角落里,今天刚发现,所以就简单介绍
引用https://blog.csdn.net/superfanstoprogram/article/details/83713196
主界面以及我对tkinter库的学习是参考的上面这个链接的(感谢🙈🙉),并且我在其他界面做了一些改动

下面为部分代码,全代码以及用到的资源文件见下面我的 GitHub 链接

"""
    标题:XXX界面
    时间:2020.02.15
    作者:Sunqk
"""
import tkinter as tk
from PIL import Image, ImageTk
from tkinter import messagebox
import tkinter.font as tkFont

def tkimg_resized(img, w_box, h_box, keep_ratio=True):
	"""对图片进行按比例缩放处理"""
	w, h = img.size

	if keep_ratio:
		if w > h:
			width = w_box
			height = int(h_box * (1.0 * h / w))

		if h >= w:
			height = h_box
			width = int(w_box * (1.0 * w / h))
	else:
		width = w_box
		height = h_box

	img1 = img.resize((width, height), Image.ANTIALIAS)
	tkimg = ImageTk.PhotoImage(img1)
	return tkimg
def image_label(frame, img, width, height, keep_ratio=True):
	"""输入图片信息,及尺寸,返回界面组件"""
	if isinstance(img, str):
		_img = Image.open(img)
	else:
		_img = img
	lbl_image = tk.Label(frame, width=width, height=height)

	tk_img = tkimg_resized(_img, width, height, keep_ratio)
	lbl_image.image = tk_img
	lbl_image.config(image=tk_img)
	return lbl_image


def show_confirm(message=""):
	"""
		True  : yes
		False : no
	"""
	return messagebox.askyesno("确认框", message)



a=None
def main():
    window = tk.Tk()                        # 创建窗口
    window.geometry("700x400")              # 窗体尺寸设置
    window.iconbitmap("Money.ico")          # 窗体左上角图标设置
    window.title("XXXXX控制界面")
    window.resizable(True, True)            # 设置窗体不可改变大小

    #背景图选择并放置
    img=ImageTk.PhotoImage(file="bg1.png")
    canvas = tk.Canvas(window, width=1000, height=800)
    canvas.create_image(300, 200, image=img)
    canvas.pack(expand=tk.YES, fill=tk.BOTH)

    def show_title(self):                     #窗口边框消失、复原函数
        global a
        a=not a
        window.overrideredirect(a)
    def close(self):                          #窗口退出函数
        if show_confirm("确认退出吗 ?"):
            window.quit()


    #**************************标题设置开始处*****************************
    f1 = tk.Frame(canvas)
    #图像按钮 1
    im1 = image_label(f1, "laugh.jpg", 86, 86, False)
    im1.configure(bg="Teal")
    im1.bind('<Button-1>',show_title)
    im1.pack(side=tk.LEFT, anchor=tk.NW, fill=tk.Y)
    #标题背景、字体......
    ft1 = tkFont.Font(family="微软雅黑", size=24, weight=tkFont.BOLD)
    tk.Label(f1, text="欢迎来到XXX控制界面", height=2, fg="white", font=ft1, bg="Teal") \
        .pack(side=tk.LEFT, expand=tk.YES, fill=tk.X)
    #图像按钮 2
    im2 = image_label(f1, "close.png", 86, 86, False)
    im2.configure(bg="Teal")
    im2.bind('<Button-1>',close)
    im2.pack(side=tk.RIGHT, anchor=tk.NW, fill=tk.Y)

    f1.pack(fill=tk.X)
    #**************************标题设置结束*****************************

# ---------------------------------------------------------------------
# 两个功能按钮组的设置
# ---------------------------------------------------------------------

    # ‘手动抓取’和‘自动抓取’功能按钮所调用的函数
    def shou_dong():
        Wd_1()
    def zi_dong():
        Wd_2()
    # 子窗口一
    def Wd_1():
        Wd=tk.Toplevel()
        Wd.geometry("%dx%d" % (800,620))        # 窗体尺寸
        Wd.title("手动抓取界面")                 # 窗体标题
        Wd.grab_set()
        Wd.resizable(True, True)

        frame = tk.Frame(Wd, height=20,bg="Goldenrod")
        ft0 = tkFont.Font(family="微软雅黑", size=18, weight=tkFont.BOLD)
        tk.Label(frame, font=ft0, bg="Chocolate", fg="white", text="请手动调控机械臂的各个舵机参数") \
            .pack(padx=20)
        frame.pack(fill=tk.X)

        ft1 = tkFont.Font(family="微软雅黑", size=12, weight=tkFont.BOLD)
        ft2 = tkFont.Font(family="微软雅黑", size=14, weight=tkFont.BOLD)

        #右边绿框(画布形式)
        canvas = tk.Canvas(frame, bg='green', height=238, width=450)
        # 定义多边形参数,然后在画布上画出指定图形
        x0, y0, x1, y1 = 100, 100, 150, 150
        line = canvas.create_line(x0 - 50, y0 - 50, x1 - 50, y1 - 50)  # 画直线
        oval = canvas.create_oval(x0 + 120, y0 + 50, x1 + 120, y1 + 50, fill='yellow')  # 画圆 用黄色填充
        arc = canvas.create_arc(50, 150, 100, 200, start=0, extent=180,fill='red')  # 画扇形 从0度打开收到180度结束
        rect = canvas.create_rectangle(330, 30, 330 + 20, 30 + 20,fill='blue')  # 画矩形正方形
        triangle = canvas.create_polygon(208,135,222,43,268,95,fill='DeepPink')

        canvas.pack(side=tk.RIGHT,anchor=tk.N)


        #舵机一框区
        v_1 = tk.StringVar()
        v_2 = tk.StringVar()
        v_3 = tk.StringVar()
        v_4 = tk.StringVar()
        v_5 = tk.StringVar()
        v_6 = tk.StringVar()

		#中间部分代码见GitHub----->!!!!!!!!
		#中间部分代码见GitHub----->!!!!!!!!
		#中间部分代码见GitHub----->!!!!!!!!
		#中间部分代码见GitHub----->!!!!!!!!
		#中间部分代码见GitHub----->!!!!!!!!
		#中间部分代码见GitHub----->!!!!!!!!

if __name__ == '__main__':
    main()

在这里插入图片描述
在这里插入图片描述
图片有点炫目奥😵
在这里插入图片描述
参考文章https://blog.csdn.net/superfanstoprogram/article/details/83713196
GitHub源码https://github.com/Sunqk5665/Python_projects/tree/master/%E8%88%B5%E6%9C%BA%E6%8E%A7%E5%88%B6%E7%95%8C%E9%9D%A2

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/74966.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!