python--16 GUI编程1

news2024/11/25 8:50:02

GUI编程简介

主流3大GUI框架

框架名称说明
Tkinter一个轻量级的跨平台图形用户界面(GUI)开发工具,是Tk图形用户界面工具包标准的Python接口
Kivy基于OpenGL ES 2,能够让使用相同源代码创建的程序能跨平台运行。这个框架是事件驱动的,基于主循环,非常适合开发游戏
PyQt一个跨平台的框架。它是用C++编写的。这是一个非常全面的库。它包含许多工具和API。它被广泛应用于许多行业。它涵盖了很多平台。PyQt是Qt库的Python版本

1. Tkinter

1.1 Tkinter概述

Tkinter是Python的标准GUI库,由Tk和Python interface组成。Tk原本是Tcl编程语言的界面库,后来开发出了Python接口。Tkinter在Python 2和Python 3中有所不同,在Python 2中称为Tkinter,在Python 3中称为tk。

1.2 Tkinter与ttk模块比较

  • 组件数量不同
  • 组件风格不同
  • 为组件定义样式的方法不同

IDLE是用Tkinter设计出来的。导入方式:

import tkinter as tk
# or
from tkinter import *

在这里插入图片描述


窗口设计

2.1 创建窗口

实例化Tk()方法,创建窗口对象,并设置窗口标题。

2.2 设置窗口属性

  • title(): 设置窗口标题
  • geometry("宽x高"): 设置窗口大小及位置
  • maxsize(): 设置窗口最大尺寸
  • minsize(): 设置窗口最小尺寸
  • configure(bg=color): 设置窗口背景色
  • resizable(True, True): 设置窗口大小是否可更改
  • state("zoomed"): 窗口最大化
  • iconify(): 窗口最小化
  • inconbitmap(): 设置窗口默认图标

2.3 设置窗口位置

(演示代码:属性及位置)

from tkinter import *
win=Tk()
win.title("tkinter的窗口的位置")     #窗口的标题
win.configure(bg="#a7ea90")        #窗口的背景颜色
winw=300                              #窗口的宽度
winh=220                              #窗口的高度
scrw=win.winfo_screenwidth()            #屏幕的宽度
scrh=win.winfo_screenheight()           #屏幕的高度
x=(scrw-winw)/2                        #窗口的水平位置
y=(scrh-winh)/2                        #窗口的垂直位置
win.geometry("%dx%d+%d+%d" %(winw,winh,x,y))            #设置窗口位置
str="程序员鄙视链"
txt=Label(win,text=str,bg="#a7ea90").pack()
win.mainloop()

2.4 窗口设计核心

Widget组件分为7类:文本类、按钮类、选择列表类、容器类、会话类、菜单类、进度条类。它们拥有公共属性和方法,如:

  • 公共属性:文本颜色、背景色、组件宽度、高度等
  • 公共方法:
    • config(): 配置组件参数
    • keys(): 获取组件参数列表

(演示代码:widget组件公共属性与方法)

# Widget的公共属性以及公共方法
# tkinter的布局方法之一:pack详细说明:https://zhuanlan.zhihu.com/p/431052225
from tkinter import *
win=Tk()
win.title("充值成功")
win.geometry("300x240")
str="1、一级VIP30天\n\n2、每天额外赠送300金币7天\n\n3、全英雄限免30天\n"
text=Label(win,text="\n充值成功!",font="Times 18 bold").pack()
text1=Label(win,text="\n恭喜获得:\n",font="16").pack(anchor=W,padx=45)
text2=Label(win,text=str,font="18",fg="red",justify="left").pack()
win.mainloop()

布局管理

3.1 pack()方法

按添加顺序布局,属性包括:

  • side: 停靠方向(LEFT、TOP、RIGHT、BOTTOM)
  • fill: 填充方向(X、Y、BOTH、NONE)
  • expand: 是否扩展(YES、NO)
  • anchor: 停泊方向(E、S、W、N及其组合,CENTER)
  • ipadxipadpadxpady

(演示代码:)

# pack()方法的使用
# padx和pady:设置组件边界距离窗口边界的距离,单位为px
# ipadx和ipady:设置组件内文字距离组件边界的距离,单位为px

from tkinter import *
win=Tk()
win.title("tkinter的初使用")
txt1=Label(win,text="象吃狮",bg="#ba55d3",font=14)
txt2=Label(win,text="狮吃虎",bg="#c1ffc1",font=14)
txt3=Label(win,text="虎吃豹",bg="#cdb5cd",font=14)
txt4=Label(win,text="豹吃狼",bg="#ba55d3",font=14)
txt5=Label(win,text="狼吃狗",bg="#c1ffc1",font=14)
txt6=Label(win,text="狗吃猫",bg="#cdb5cd",font=14)
txt7=Label(win,text="猫吃鼠",bg="#ba55d3",font=14)
txt8=Label(win,text="鼠吃象",bg="#c1ffc1",font=14)

txt1.pack(side="left",padx="10",pady="5",ipadx="6",ipady="4")
txt2.pack(side="left",padx="10",pady="5",ipadx="6",ipady="4")
txt3.pack(side="left",padx="10",pady="5",ipadx="6",ipady="4")
txt4.pack(side="left",padx="10",pady="5",ipadx="6",ipady="4")
txt5.pack(side="left",padx="10",pady="5",ipadx="6",ipady="4")
txt6.pack(side="left",padx="10",pady="5",ipadx="6",ipady="4")
txt7.pack(side="left",padx="10",pady="5",ipadx="6",ipady="4")
txt8.pack(side="left",padx="10",pady="5",ipadx="6",ipady="4")
win.mainloop()

3.2 grid()方法

行/列定位,属性包括:

  • row: 行(从0算起)
  • column: 列(从0算起)
  • rowspancolumnspan: 跨行、跨列
  • sticky: 开始方向(E、S、W、N)
    在这里插入图片描述

(演示代码:)

# encoding: utf-8
# grid()的使用
# row表示行,column表示列

from tkinter import *
win=Tk()     #创建根窗口
win.title("grid()方法")    #添加标题
# grid(row=0,column=0,padx=10)设置组件位于第0行第0列,与其他组件的水平间距为10
Label(win,text="1*1=1",bg="#E0FFFF").grid(row=0,column=0,padx=10)
Label(win,text="1*2=3",bg="#E0FFFF").grid(row=1,column=0,padx=10)
Label(win,text="1*3=3",bg="#E0FFFF").grid(row=2,column=0,padx=10)
Label(win,text="1*4=4",bg="#E0FFFF").grid(row=3,column=0,padx=10)

Label(win,text="2*2=4",bg="#EEA9B8").grid(row=1,column=1,padx=10)
Label(win,text="2*3=6",bg="#EEA9B8").grid(row=2,column=1,padx=10)
Label(win,text="2*4=8",bg="#EEA9B8").grid(row=3,column=1,padx=10)

Label(win,text=" 3*3=9 ",bg="#F08080").grid(row=2,column=2,padx=10)
Label(win,text="3*4=12",bg="#F08080").grid(row=3,column=2,padx=10)

Label(win,text="4*4=16",bg="#FFE1FF").grid(row=3,column=3,padx=10)
win.mainloop()

3.3 place()方法

允许指定组件的大小和位置。
在这里插入图片描述

(演示代码:)

# encoding: utf-8
#place()的使用
#width和 height,x和y

from tkinter import *
win=Tk()
win.title("华容道")     # 添加窗口标题
win.geometry("240x300")      # 设置窗口大小
txt1=Label(win,text="赵云",bg="#FF1493",relief="solid",font=14)    #华容道游戏中的滑块
txt2=Label(win,text="曹操",bg="#EEEE00",relief="solid",font=14)
txt3=Label(win,text="黄忠",bg="#FF1493",relief="solid",font=14)
txt4=Label(win,text="张飞",bg="#FF1493",relief="solid",font=14)
txt5=Label(win,text="关羽",bg="#FF1493",relief="solid",font=14)
txt6=Label(win,text="马超",bg="#FF1493",relief="solid",font=14)
txt7=Label(win,text="卒",bg="#9932CC",relief="solid",font=14)
txt8=Label(win,text="卒",bg="#9932CC",relief="solid",font=14)
txt9=Label(win,text="卒",bg="#9932CC",relief="solid",font=14)
txt0=Label(win,text="卒",bg="#9932CC",relief="solid",font=14)
# width为组件宽度,height为组件高度,x为滑块左上角定点的横坐标,y为滑块左上角的纵坐标
txt1.place(width=60,height=120,x=0,y=0)
txt2.place(width=120,height=120,x=60,y=0)
txt3.place(width=60,height=120,x=180,y=0)
txt4.place(width=60,height=120,x=0,y=120)
txt5.place(width=120,height=60,x=60,y=120)
txt6.place(width=60,height=120,x=180,y=120)
txt7.place(width=60,height=60,x=60,y=180)
txt8.place(width=60,height=60,x=120,y=180)
txt9.place(width=60,height=60,x=0,y=240)
txt0.place(width=60,height=60,x=180,y=240)
win.mainloop()


文本类组件

4.1 Label标签组件

  • 文本标签
  • 图片标签
    在这里插入图片描述
    在这里插入图片描述

(演示代码:)

# encoding: utf-8
# label组件的使用
# 设置label的样式以及设置文本样式

from tkinter import *
win=Tk()                           #添加标题
win.title("斗兽棋游戏的食物链")    #添加标题
# textd定义Label标签里的文本内容,bg表示Label的背景颜色
txt1=Label(win,text="象",bg="#FFEBCD",width=5,padx=4,pady=4,font="14")
txt2=Label(win,text="狮",bg="#c1ffc1",width=5,padx=4,pady=4,font="14")
txt3=Label(win,text="虎",bg="#FFEBCD",width=5,padx=4,pady=4,font="14")
txt4=Label(win,text="豹",bg="#c1ffc1",width=5,padx=4,pady=4,font="14")
txt5=Label(win,text="狼",bg="#FFEBCD",width=5,padx=4,pady=4,font="14")
txt6=Label(win,text="狗",bg="#c1ffc1",width=5,padx=4,pady=4,font="14")
txt7=Label(win,text="猫",bg="#FFEBCD",width=5,padx=4,pady=4,font="14")
txt8=Label(win,text="鼠",bg="#c1ffc1",width=5,padx=4,pady=4,font="14")
# foreground设置label组件的文字颜色
txtr1=Label(win,text="→",padx=2,pady=2,foreground="#B22222").grid(row=1,column=2)
txtr2=Label(win,text="→",padx=2,pady=2,foreground="#B22222").grid(row=1,column=4)
txtb1=Label(win,text="↓",padx=2,pady=2,foreground="#B22222").grid(row=2,column=5)
txtb2=Label(win,text="↓",padx=2,pady=2,foreground="#B22222").grid(row=4,column=5)
txtl1=Label(win,text="←",padx=2,pady=2,foreground="#B22222").grid(row=5,column=4)
txtl2=Label(win,text="←",padx=2,pady=2,foreground="#B22222").grid(row=5,column=2)
txtt1=Label(win,text="↑",padx=2,pady=2,foreground="#B22222").grid(row=4,column=1)
txtt2=Label(win,text="↑",padx=2,pady=2,foreground="#B22222").grid(row=2,column=1)
# 设置斗兽棋游戏的棋子的位置
txt1.grid(row=1,column=1)
txt2.grid(row=1,column=3)
txt3.grid(row=1,column=5)
txt4.grid(row=3,column=5)
txt5.grid(row=5,column=5)
txt6.grid(row=5,column=3)
txt7.grid(row=5,column=1)
txt8.grid(row=3,column=1)
win.mainloop()

4.2 Entry单行文本框组件

在这里插入图片描述

(演示代码:)

# encoding: utf-8


from tkinter import *

win=Tk()
win.configure(bg="#EFE5D2")    #设置窗口的背景颜色
user=PhotoImage(file="user.png")     #用户名图标
psw=PhotoImage(file="psw.png")       #密码图标

Label(win,image=user,bg="#fff").grid(row=0)    #显示用户名图标
Entry(win).grid(row=0,column=1,padx=10,pady=10)  #用户名文本框

Label(win,image=psw,bg="#fff").grid(row=1)       #显示密码图标
Entry(win,show="*").grid(row=1,column=1,padx=10,pady=10)    #密码文本框,输入的内容显示为“*”

Label(win,text="确定",relief="groove").grid(row=2,columnspan=2,pady=10)
win.mainloop()

4.3 Text多行文本框组件

在这里插入图片描述

(演示代码:)

i = 0   #单击按钮的次数,初始值为0


def show():
    global i  #声明为全局变量
    i += 1   #单击一次按钮,ijiu就加1
    label.config(text="你点了我\t" + str(i) + "下")


from tkinter import *

root = Tk()        #创建根窗口
text = Text(root, width=70, height=20, bg="#CAE1FF", relief="solid",font=14)   #创建多行文本框

photo = PhotoImage(file='ico.png')        # 创建了一个图象对象
text.image_create(END, image=photo)       # text中插入图像
text.insert(INSERT, "在这里添加文本:\n")  # 添加文本
text.pack()       #包装文本框,没有此步骤,文本框无法显示在窗口中
# 插入组件
bt = Button(root, text='你点我试试', command=show, padx=10)  #创建按钮
text.window_create("2.end", window=bt)  # 将按钮放置在text中
label = Label(root, padx=10, text="你点了我0下")   #创建Label组件
text.window_create("3.end", window=label)  # 将Label组件放置在text中
root.mainloop()

4.4 Spinbox输入选择组件

方法及含义:

  • activebackground: 当Spinbox处于“active”状态下的背景颜色
  • buttonbackground: 箭头的背景颜色
  • buttoncursor: 鼠标悬停在箭头上的样式
  • command: 当用户通过箭头调节内容时调用某函数
  • disabledbackground: 当Spinbox处于“disabled”状态下的背景颜色
  • esportselection: 指定选中的文本是否可以复制到剪切板
  • justify: Spinbox内文本的对齐方式
  • readonlybackground: 当Spinbox处于“readonly”状态下的背景色
  • state: 设置Spinbox的状态(normal、disabled、readonly)
    在这里插入图片描述

在这里插入图片描述

(演示代码:)

# Spinbox组件

from tkinter import *
win=Tk()             #创建根窗口
win.title("购买道具")    #添加窗口标题
Label(win,text="购买道具:").grid(row=0,column=0,pady=10)
#通过元组定义可选择的值
Spinbox(win,values=("绿水晶","红宝石","生命水")).grid(row=0,column=1,pady=10)
Label(win,text="购买数量:").grid(row=1,column=0,pady=10)
#通过from_和to定义可选的数值范围
Spinbox(win,from_=1,to=5).grid(row=1,column=1,pady=10)
Label(win,text="限购5件").grid(row=1,column=2,pady=10)
Label(win,text="支付方式:").grid(row=2,column=0,pady=10)
Spinbox(win,values=("金币","钻石","点券")).grid(row=2,column=1,pady=10)
win.mainloop()

4.5 Scale规定数值范围组件

在这里插入图片描述

(演示代码:)

# Scale

from tkinter import *
# num=0   #设置初始值
# # 单击加号时,滑块向右移动一格,并且计算爱心暴击
def up1():
    if scale1.get() < 50:
        val = scale1.get() + 1
        scale1.set(val)
        num=val*5
        txt.config(text="爱心暴击 "+str(num))
# 单击减号时,滑块向左移动一格,并且计算爱心暴击
def down1():
    if scale1.get() > 0:
        val = scale1.get() - 1
        scale1.set(val)
        num = val * 5
        txt.config(text="爱心暴击 " + str(num))
#滑动滑块时,计算爱心暴击
def hit(widget):
    num=scale1.get()*5
    txt.config(text="爱心暴击 " + str(num))
win = Tk()
win.title("爱心暴击")
txt = Label(text="爱心暴击+0")
txt.pack(side=TOP)
btndown = Button(win, text="-", command=down1, width=2).pack(side="left")

# scale()的使用
# win为指定的父容器
# from_和to指定Scale组件值的范围
# resolution定义滑块每次更改的数值
# orient定义显示方向:HORIZONTAL水平显示,VERTICAL垂直显示

# 设置滑块的取值范围为0-50,进步值为1,
scale1 = Scale(win, from_=0, to=50, resolution=1, orient=HORIZONTAL,showvalue=0,command=hit,troughcolor="#22EBBB")
scale1.pack(side="left")
num = Entry()
btnup = Button(win, text="+", command=up1, width=2).pack(side="left")
win.mainloop()



按钮类组件

5 按钮

  • Button按钮组件

  • 在这里插入图片描述

  • Radiobutton单选按钮组件

  • 在这里插入图片描述

  • Checkbutton复选框组件

  • 在这里插入图片描述

(演示代码:)

from tkinter import *

def counter():
    global count,win
    count+=1
    lal=Label(win, text='我被点击'+str(count)+'次')
    lal.pack()
 
count=0
win=Tk()
win.wm_title('Button示例_1')
btn=Button(win,text='按我!',command=counter)  #绑定方式1: command
btn.pack()
      
win.mainloop()
# text:显示的文本内容
# command:指定的事件处理函数
from tkinter import *

def callCheckbutton():
    #改变 v 的值,即改变 Checkbutton 的显示值

    if  v.get()=='未选中' :
        v.set('选中')
    else:
         v.set('未选中')
root = Tk()
v = StringVar()
v.set('未选中')
#绑定 v 到 Checkbutton 的属性 textvariable
Checkbutton(root, text = 'check python', textvariable = v,command = callCheckbutton).pack()

mainloop()


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1941554.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LLaMA 背景

什么是LLaMA&#xff1f; 模型介绍&#xff1a;LLaMA是Meta开发的语言模型&#xff0c;旨在推动开放科学和人工智能的实践。 参数范围&#xff1a;这些模型的参数数量从7B到65B不等&#xff0c;覆盖了不同规模的需求。 训练数据&#xff1a;LLaMA模型是在数万亿个公开数据集的…

2024视频改字祝福 豪车装X系统源码uniapp前端源码

源码介绍 uniapp视频改字祝福 豪车装X系统源码 全开源,只有uniapp前端&#xff0c;API接口需要寻找对应的。 创意无限&#xff01;AI视频改字祝福&#xff0c;豪车装X系统源码开源&#xff0c;打造个性化祝福视频不再难&#xff01; 想要为你的朋友或家人送上一份特别的祝福…

Spring Boot 日志 (初级)

什么是日志呢&#xff1f;其实就是一条条的打印语句&#xff0c;我们就可以根据打印出来的日志&#xff0c;去分析程序存在的问题等。虽然作为后端开发人员&#xff0c;日志并不是那么重要&#xff0c;但是在学习的过程中&#xff0c;也是比较重要的&#xff0c;可以使用在我们…

OpenCV分水岭算法watershed函数的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 描述 我们将学会使用基于标记的分水岭算法来进行图像分割。我们将看到&#xff1a;watershed()函数的用法。 任何灰度图像都可以被视为一个地形表…

vue项目实战速查记录

1.图片下载到本地 2.本地静态文件访问 3.元素大小相同,相互覆盖 1.图片下载到本地 实现原理:创建a标签,利用a标签下载属性. download(){const link document.createElement(a);link.href "图片地址";link.setAttribute(download, name);document.body.ap…

Docker核心技术:Docker原理之Namespace

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 Docker核心技术 系列文章&#xff1a;Docker原理之Namespace&#xff0c;其他文章快捷链接如下&#xff1a; 应用架构演进容器技术要解决哪些问题Docker的基本使用Docker是如何实现的 Docker核心技术&#xff1…

【Qt】 FFmpeg+Qt windows 32位或者64位环境搭建

简介 目前Ffmpeg官网&#xff08;64位连接&#xff09;下载的均为64位编译的&#xff0c;这要求我们采用的Qt creator也采用64位编译器。但是仍存在部分用户采用32位编译器&#xff0c;所以这部分用户需下载32 Ffmpeg&#xff08;32位连接&#xff09;。 根据使用的编译器位数…

ArkTS语言---基础知识

ArkTS是一种为构建高性能应用而设计的编程语言。ArkTS在继承TypeScript语法的基础上进行了优化&#xff0c;以提供更高的性能和开发效率。目前流行的编程语言TypeScript是在JavaScript基础上通过添加类型定义扩展而来的&#xff0c;而ArkTS则是TypeScript的进一步扩展。TypeScr…

【面经】C++八股文(地平线C++一面)

一、C11的新特性都有哪些&#xff1f; 1.1 自动类型推断 (auto) auto 关键字允许编译器自动推断变量的类型&#xff0c;从而简化代码的书写。 auto num 5; // int auto pi 3.14; // double auto str "Hello"; // const char*1.2 范围 for 循环 范围…

tomcat部署java项目 出现404访问不到

今天使用tomcat做项目部署,部署SSM项目把项目上传到tomcat下面的webapps后一直访问不到项目 一直报404访问不到资源&#xff0c;但是访问tomcat又可以&#xff0c;浏览器能出现tomcat的标致&#xff0c;查看logs里面的运行日志发现报错&#xff1a;org.apache.catalina.core.St…

PYTHON学习笔记(四、pyhton数据结构--列表)

&#xff08;1&#xff09;list列表 列表的含义是指&#xff1a;&#xff08;1&#xff09;一系列的按特定顺序排列的元素组成。&#xff08;2&#xff09;python中内置的可变序列。&#xff08;3&#xff09;在python中使用[]定义列表&#xff0c;元素与元素之间使用英文的逗…

Vue中渲染函数

why? 在绝大多数情况下&#xff0c;Vue 推荐使用模板语法来创建应用。然而在某些使用场景下&#xff0c;我们真的需要用到 JavaScript 完全的编程能力。这时渲染函数就派上用场了。 例如&#xff1a;下方要在多个模型上方设置对话框&#xff0c;如果使用Vue模板语法相对较困难…

c#中的From窗体

Windows Forms&#xff08;简称WinForms&#xff09;是.NET Framework中用于构建Windows桌面应用程序的一个组件。Form 类是WinForms中最基本的窗口类型&#xff0c;提供了一个容器&#xff0c;可以容纳控件&#xff08;如按钮、文本框、标签等&#xff09;。 以下是Form的一些…

数据结构之判断平衡二叉树详解与示例(C,C++)

文章目录 AVL树定义节点定义计算高度获取平衡因子判断是否为平衡二叉树完整示例代码结论 在计算机科学中&#xff0c;二叉树是一种非常重要的数据结构。它们被广泛用于多种算法中&#xff0c;如排序、查找等。然而&#xff0c;普通的二叉树在极端情况下可能退化成链表&#xff…

autoware.universe源码略读(3.17)--perception:occupancy_grid_map_outlier_filter

autoware.universe源码略读3.17--perception:occupancy_grid_map_outlier_filter Overview&#xff08;Class&#xff09;RadiusSearch2dfilter&#xff08;Class Constructor&#xff09;RadiusSearch2dfilter::RadiusSearch2dfilter&#xff08;mFunc&#xff09;RadiusSearc…

Transformer系列总结

文章目录 1、Transformer基本原理介绍1.Transformer 结构2.嵌入表示层3. 注意力层3.1 输⼊矩阵3.2 查询矩阵和键矩阵3.3 Q和K的转置的点击除以键向量维度的平⽅根3.4 应⽤softmax函数3.5 注意力矩阵通过分数矩阵乘以值矩阵得出3.6 注意⼒矩阵 4. 前馈层5. 残差连接与层归一化6.…

虚幻引擎,体积雾、体积光、镜头泛光

1、体积雾 这里介绍的是用于地面的体积雾效果&#xff0c;效果如图1-1&#xff1a; 图1-1 首先&#xff0c;需要场景中存在指数级高度雾并开启体积雾&#xff08;如图1-2&#xff09;。然后创建材质&#xff0c;材质域选择“体积”&#xff0c;混合模式选择“Additive”。材质节…

二叉树的构造问题 | LeetCode刷题笔记 | 每日练习 | 深度优先遍历| 广度优先遍历 | Java

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 &#x1f4cc;本篇分享的是与构造二叉树&#x1f384;有关的问题&#xff0c;有关二叉树的基础知识可以点击此处跳转学习&#x1f448;&#xff0c;构造二叉树的就是…

嵌入式人工智能(18-基于树莓派4B的继电器JQC-3FF-S-Z)

1、继电器 继电器是一种电控开关设备&#xff0c;由一个电磁系统和一个控制电路组成。当控制电路给予电磁系统足够的电流或电压时&#xff0c;电磁系统会产生磁场&#xff0c;使其内部的触点发生动作。这个动作可以使电流或电压在主电路中开关或转换&#xff0c;起到控制电路的…

【EarthMarker】区域级和点级遥感图像理解的视觉提示学习框架

摘要 自然图像区域视觉提示使用户可以通过各种视觉标记&#xff0c;如框、点和其他形状&#xff0c;和AI进行交互。但是&#xff0c;自然图像和RS图像之间存在显著差异&#xff0c;现有的视觉提示模型在RS场景中面临着挑战。此外&#xff0c;RS MLLMs主要关注于解释图像级RS数…