简单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