023——搭建图形化客户端(基于pySimpleGUI)

目录

一、pysimplegui

1.1 安装

1.2 测试

二、 pysimplegui学习

2.1 学习地址 

2.2 人类早期驯服pysimplegui珍贵流水账

三、 实现项目专属的界面


一、pySimpleGUI

1.1 安装

pip install pysimplegui -i https://pypi.tuna.tsinghua.edu.cn/simple

Command 'pip' not found, but can be installed with:

apt install python-pip
Please ask your administrator.

报错只需要安装一下pip就行

1.2 测试

这个图形化库还依赖另一个库

Traceback (most recent call last):
  File "test_pysimplegui.py", line 1, in <module>
    import PySimpleGUI as sg  
  File "/home/book/.local/lib/python3.8/site-packages/PySimpleGUI/__init__.py", line 1, in <module>
    from .PySimpleGUI import *
  File "/home/book/.local/lib/python3.8/site-packages/PySimpleGUI/PySimpleGUI.py", line 84, in <module>
    import tkinter as tk
ModuleNotFoundError: No module named 'tkinter'

sudo apt-get install python3-tk

这个包5.0以后开始收费了

先卸载然后验证一下

这样就证明卸载成功了

然后

pip install PySimpleGUI==4.14.1 -i https://pypi.tuna.tsinghua.edu.cn/simple

简单测试了一下木有问题呢

import PySimpleGUI as sg  
  
# 定义窗口布局  
layout = [  
    [sg.Text("Hello PySimpleGUI")],  
    [sg.Button("Click Me")],  
    [sg.Output(size=(40, 10))]  
]  
  
# 创建窗口  
window = sg.Window('Test PySimpleGUI', layout)  
  
# 事件循环  
while True:  
    event, values = window.read()  
    if event == sg.WIN_CLOSED or event == 'Exit':  # 如果点击了窗口关闭按钮或者用户选择了退出  
        break  
    if event == 'Click Me':  # 如果点击了按钮  
        window['Output'].update('Button clicked!')  # 在输出区域更新消息  
  
# 关闭窗口  
window.close()

二、 pySimpleGUI学习

2.1 学习地址 



PyPI · The Python Package Index

没找到4.14.1.

先按照4.60学习

这个太卡了也可以不看这个,不过这个是官方的所以比较权威

The Project - PySimpleGUI Documentation

https://github.com/PySimpleGUI/PySimpleGUI

这个库是一个上层的库,它支持调用下面四个底层库,默认是TKinter。我们项目中用的也是这个

2.2 人类早期驯服pySimpleGUI珍贵流水账

有很多的资料,我觉得最快的还是直接看demo

不过会遇到很多问题,因为我们下载的不是最新版。好多方法老版本木有的

比如这个问题

import PySimpleGUI as sg

"""
    Demo - Element List

    All elements shown in 1 window as simply as possible.

    Copyright 2022-2023 PySimpleSoft, Inc. and/or its licensors. All rights reserved.
    
    Redistribution, modification, or any other use of PySimpleGUI or any portion thereof is subject to the terms of the PySimpleGUI License Agreement available at https://eula.pysimplegui.com.
    
    You may not redistribute, modify or otherwise use PySimpleGUI or its contents except pursuant to the PySimpleGUI License Agreement.
"""


use_custom_titlebar = True if sg.running_trinket() else False

def make_window(theme=None):

    NAME_SIZE = 23


    def name(name):
        dots = NAME_SIZE-len(name)-2
        return sg.Text(name + ' ' + '•'*dots, size=(NAME_SIZE,1), justification='r',pad=(0,0), font='Courier 10')

    sg.theme(theme)

    # NOTE that we're using our own LOCAL Menu element
    if use_custom_titlebar:
        Menu = sg.MenubarCustom
    else:
        Menu = sg.Menu

    treedata = sg.TreeData()

    treedata.Insert("", '_A_', 'Tree Item 1', [1234], )
    treedata.Insert("", '_B_', 'B', [])
    treedata.Insert("_A_", '_A1_', 'Sub Item 1', ['can', 'be', 'anything'], )

    layout_l = [
                [name('Text'), sg.Text('Text')],
                [name('Input'), sg.Input(s=15)],
                [name('Multiline'), sg.Multiline(s=(15,2))],
                [name('Output'), sg.Output(s=(15,2))],
                [name('Combo'), sg.Combo(sg.theme_list(), default_value=sg.theme(), s=(15,22), enable_events=True, readonly=True, k='-COMBO-')],
                [name('OptionMenu'), sg.OptionMenu(['OptionMenu',],s=(15,2))],
                [name('Checkbox'), sg.Checkbox('Checkbox')],
                [name('Radio'), sg.Radio('Radio', 1)],
                [name('Spin'), sg.Spin(['Spin',], s=(15,2))],
                [name('Button'), sg.Button('Button')],
                [name('ButtonMenu'), sg.ButtonMenu('ButtonMenu', sg.MENU_RIGHT_CLICK_EDITME_EXIT)],
                [name('Slider'), sg.Slider((0,10), orientation='h', s=(10,15))],
                [name('Listbox'), sg.Listbox(['Listbox', 'Listbox 2'], no_scrollbar=True,  s=(15,2))],
                [name('Image'), sg.Image(sg.EMOJI_BASE64_HAPPY_THUMBS_UP)],
                [name('Graph'), sg.Graph((125, 50), (0,0), (125,50), k='-GRAPH-')]  ]

    layout_r  = [[name('Canvas'), sg.Canvas(background_color=sg.theme_button_color()[1], size=(125,40))],
                [name('ProgressBar'), sg.ProgressBar(100, orientation='h', s=(10,20), k='-PBAR-')],
                [name('Table'), sg.Table([[1,2,3], [4,5,6]], ['Col 1','Col 2','Col 3'], num_rows=2)],
                [name('Tree'), sg.Tree(treedata, ['Heading',], num_rows=3)],
                [name('Horizontal Separator'), sg.HSep()],
                [name('Vertical Separator'), sg.VSep()],
                [name('Frame'), sg.Frame('Frame', [[sg.T(s=15)]])],
                [name('Column'), sg.Column([[sg.T(s=15)]])],
                [name('Tab, TabGroup'), sg.TabGroup([[sg.Tab('Tab1',[[sg.T(s=(15,2))]]), sg.Tab('Tab2', [[]])]])],
                [name('Pane'), sg.Pane([sg.Col([[sg.T('Pane 1')]]), sg.Col([[sg.T('Pane 2')]])])],
                [name('Push'), sg.Push(), sg.T('Pushed over')],
                [name('VPush'), sg.VPush()],
                [name('Sizer'), sg.Sizer(1,1)],
                [name('StatusBar'), sg.StatusBar('StatusBar')],
                [name('Sizegrip'), sg.Sizegrip()]  ]

    # Note - LOCAL Menu element is used (see about for how that's defined)
    layout = [[Menu([['File', ['Exit']], ['Edit', ['Edit Me', ]]],  k='-CUST MENUBAR-',p=0)],
              [sg.T('PySimpleGUI Elements - Use Combo to Change Themes', font='_ 14', justification='c', expand_x=True)],
              [sg.Checkbox('Use Custom Titlebar & Menubar', use_custom_titlebar, enable_events=True, k='-USE CUSTOM TITLEBAR-', p=0)],
              [sg.Col(layout_l, p=0), sg.Col(layout_r, p=0)]]

    window = sg.Window('The PySimpleGUI Element List', layout, finalize=True, right_click_menu=sg.MENU_RIGHT_CLICK_EDITME_VER_EXIT, keep_on_top=True, use_custom_titlebar=use_custom_titlebar)

    window['-PBAR-'].update(30)                                                     # Show 30% complete on ProgressBar
    window['-GRAPH-'].draw_image(data=sg.EMOJI_BASE64_HAPPY_JOY, location=(0,50))   # Draw something in the Graph Element

    return window


window = make_window()

while True:
    event, values = window.read()
    # sg.Print(event, values)
    if event == sg.WIN_CLOSED or event == 'Exit':
        break

    if values['-COMBO-'] != sg.theme():
        sg.theme(values['-COMBO-'])
        window.close()
        window = make_window()
    if event == '-USE CUSTOM TITLEBAR-':
        use_custom_titlebar = values['-USE CUSTOM TITLEBAR-']
        sg.set_options(use_custom_titlebar=use_custom_titlebar)
        window.close()
        window = make_window()
    if event == 'Edit Me':
        sg.execute_editor(__file__)
    elif event == 'Version':
        sg.popup_scrolled(__file__, sg.get_versions(), keep_on_top=True, non_blocking=True)
window.close()

从名字上看我觉得它只是想验证他的依赖库是不是安装了

给他改成直接等于true

改成flase也会报错

一顿修算是勉强能跑起来了

import PySimpleGUI as sg

def make_window(theme=None):
    NAME_SIZE = 23
    def name(name):
        dots = NAME_SIZE-len(name)-2
        return sg.Text(name + ' ' + '•'*dots, size=(NAME_SIZE,1), justification='r',pad=(0,0), font='Courier 10')

    sg.theme(theme)
    Menu = sg.Menu
    menu_def = [['File', ['Open', 'Save', 'Exit']], ['Edit', ['Copy', 'Paste']]]
    treedata = sg.TreeData()

    treedata.Insert("", '_A_', 'Tree Item 1', [1234], )
    treedata.Insert("", '_B_', 'B', [])
    treedata.Insert("_A_", '_A1_', 'Sub Item 1', ['can', 'be', 'anything'], )
    s1=15
    s2=(15,2)
    use_custom_titlebar=False
    layout_l = [
                [name('Text'), sg.Text('Text')],
                [name('Input'), sg.Input(s1)],
                [name('Multiline'), sg.Multiline(s2)],
                [name('Output'), sg.Output(s2)],
                [name('Combo'), sg.Combo(sg.theme_list(), default_value=sg.theme(), size=(15,22), enable_events=True, readonly=True, key='-COMBO-')],
                [name('OptionMenu'), sg.OptionMenu(['OptionMenu',],s2)],
                [name('Checkbox'), sg.Checkbox('Checkbox')],
                [name('Radio'), sg.Radio('Radio', 1)],
                [name('Spin'), sg.Spin(['Spin',], s2)],
                [name('Button'), sg.Button('Button')],
                #[name('ButtonMenu'), sg.ButtonMenu('ButtonMenu'), ['Open', 'Save', 'Exit']],
                [name('Slider'), sg.Slider((0,10), orientation='h', size=(10,15))],
                [name('Listbox'), sg.Listbox(['Listbox', 'Listbox 2'], no_scrollbar=True,  size=(15,2))],
                #[name('Image'), sg.Image(sg.EMOJI_BASE64_HAPPY_THUMBS_UP)],
                [name('Graph'), sg.Graph((125, 50), (0,0), (125,50), key='-GRAPH-')]  ]

    layout_r  = [[name('Canvas'), sg.Canvas(background_color=sg.theme_button_color()[1], size=(125,40))],
                [name('ProgressBar'), sg.ProgressBar(100, orientation='h', size=(10,20), key='-PBAR-')],
                [name('Table'), sg.Table([[1,2,3], [4,5,6]], ['Col 1','Col 2','Col 3'], num_rows=2)],
                [name('Tree'), sg.Tree(treedata, ['Heading',], num_rows=3)],
                #[name('Horizontal Separator'), sg.HSep()],
                [name('Vertical Separator'), sg.VSep()],
                [name('Frame'), sg.Frame('Frame', [[sg.T(s1)]])],
                [name('Column'), sg.Column([[sg.T(s1)]])],
                [name('Tab, TabGroup'), sg.TabGroup([[sg.Tab('Tab1',[[sg.T(s2)]]), sg.Tab('Tab2', [[]])]])],
                [name('Pane'), sg.Pane([sg.Col([[sg.T('Pane 1')]]), sg.Col([[sg.T('Pane 2')]])])],
                #[name('Push'), sg.Push(), sg.T('Pushed over')],
                #[name('VPush'), sg.VPush()],
                [name('Sizer'), sg.Sizer(1,1)],
                [name('StatusBar'), sg.StatusBar('StatusBar')],
                #[name('Sizegrip'), sg.Sizegrip()]  
                ]

    # Note - LOCAL Menu element is used (see about for how that's defined)
    layout = [[Menu([['File', ['Exit']], ['Edit', ['Edit Me', ]]],  key='-CUST MENUBAR-')],
              [sg.T('PySimpleGUI Elements - Use Combo to Change Themes', font='_ 14', justification='c')],
              [sg.Checkbox('Use Custom Titlebar & Menubar', use_custom_titlebar, enable_events=True, key='-USE CUSTOM TITLEBAR-')],
              [sg.Col(layout_l), sg.Col(layout_r)]]

    window = sg.Window('The PySimpleGUI Element List', layout, finalize=True, keep_on_top=True)

    window['-PBAR-'].update(30)                                                     # Show 30% complete on ProgressBar
    window['-GRAPH-'].draw_image(location=(0,50))   # Draw something in the Graph Element

    return window

window = make_window()

while True:
    event, values = window.read()
    # sg.Print(event, values)
    if event == sg.WIN_CLOSED or event == 'Exit':
        break

    if values['-COMBO-'] != sg.theme():
        sg.theme(values['-COMBO-'])
        window.close()
        window = make_window()
    if event == '-USE CUSTOM TITLEBAR-':
        use_custom_titlebar = values['-USE CUSTOM TITLEBAR-']
        sg.set_options(use_custom_titlebar=use_custom_titlebar)
        window.close()
        window = make_window()
    if event == 'Edit Me':
        sg.execute_editor(__file__)
    elif event == 'Version':
        sg.popup_scrolled(__file__, sg.get_versions(), keep_on_top=True, non_blocking=True)
window.close()

慎用吧好多功能和API文档描述不一致因为版本不一样。

三、 实现项目专属的界面

'''
fuction : 客户端界面
author  : 辛天宇
data    : 2024-4-12
-------------------------------
author data  modify

'''
import PySimpleGUI as sg

# 全局变量
# 对齐长度
NAME_SIZE = 23

# name 对齐函数
def name(name):
    dots = NAME_SIZE-len(name)-2
    return sg.Text(name + ' ' + '•'*dots, size=(NAME_SIZE,1), justification='r',pad=(0,0), font='Courier 10')

def show_window(theme):
    # 是否使用自定义标题栏
    use_custom_titlebar = False
    # 设置主题
    sg.theme(theme)
    # 创建菜单
    Menu = sg.Menu
    # 左面layout
    layout_l =  [
                    [name('Text'), sg.Text('Text')],
                ]
    #右面layout
    layout_r  = [
                    [name('Text'), sg.Text('Text')],
                ]


    layout = [
                [Menu([['File', ['Exit']], ['Edit', ['Edit Me', ]]],  key='-CUST MENUBAR-')],
                [sg.T('Chip Evaluation Board Self-test System', font='_ 14', justification='c')],
                [sg.Checkbox('Use Custom Titlebar & Menubar', use_custom_titlebar, enable_events=True, key='-USE CUSTOM TITLEBAR-')],
                [sg.Col(layout_l), sg.Col(layout_r)]
            ]

    window = sg.Window('The PySimpleGUI Element List', layout, finalize=True, keep_on_top=True)

    # 事件循环  
    while True:  
        event, values = window.read()  
        if event == sg.WIN_CLOSED or event == 'Exit':  
            break  
        elif event == '-USE CUSTOM TITLEBAR-':  
            # 这里可以添加处理自定义标题栏的逻辑  
            print(f"Use Custom Titlebar: {values['-USE CUSTOM TITLEBAR']}")  
        # 处理其他事件...  

def main():
    # theme参考/client/README
    while True:
        show_window('DefaultNoMoreNagging')

if __name__ == '__main__':
    main()

有个bug打印的时候会重定向到output这个框里无语了

合理利用bug哈哈哈哈哈哈。

暂时就先这样吧后面联调时在处理具体业务。

'''
fuction : 客户端界面
author  : 辛天宇
data    : 2024-4-12
-------------------------------
author data  modify

'''
import PySimpleGUI as sg

# 全局变量
# 项目名称
TOPIC = 'Chip Evaluation Board Self-test System'
# 对齐长度
NAME_SIZE = 23
# 服务器IP
SERVER_IP = "192.168.5.10"
# 温度
TEM = 28
# 湿度
HUM = 25

# name 对齐函数
def name(name):
    dots = NAME_SIZE-len(name)-2
    return sg.Text(name + ' ' + '•'*dots, size=(NAME_SIZE,1), justification='r',pad=(0,0), font='Courier 10')

def add_stars_to_string(s, n):  
    return '*'*n + s + '*'*n  

def show_window(theme):
    # 是否使用自定义标题栏
    use_custom_titlebar = False
    # 设置主题
    sg.theme(theme)
    # 创建菜单
    Menu = sg.Menu
    # 左部layout
    layout_l =  [
                    [name('NetWork'), sg.Button('Connect', key='Connect')],
                    [name('NetWork'), sg.Button('Disconnect', key='Disconnect')],
                    [name('NetWork'), sg.Output(size=(32, 1), key='IP')],
                    [name('Getvalue'), sg.Output(size=(32, 1), key='Getvalue')]
                ]
    # 右部layout
    layout_r  = [
                    [name('Text'), sg.Button('LED', key='LED')],
                    [name('Text'), sg.Button('SR501', key='SR501')],
                    [name('Text'), sg.Button('SR04', key='SR04')],
                    [name('Text'), sg.Button('irda', key='irda')],
                    [name('Text'), sg.Button('motor', key='motor')],
                    [name('Text'), sg.Button('dht11', key='dht11')],
                    [name('Text'), sg.Button('ds18b20', key='ds18b20')],
                    [name('Text'), sg.Button('IIC', key='IIC')],
                    [name('Text'), sg.Button('SPI', key='SPI')],
                ]
    # 修饰
    topic = add_stars_to_string(TOPIC, 5)
    # 设置字体为14号,无特殊样式,通常字体名称和大小用元组表示  
    topic_font = ('_', 24)
    # 整体layout
    layout = [
                [sg.T(topic, text_color='blue', justification='c', font=topic_font)],
                # [sg.Checkbox('Use Custom Titlebar & Menubar', use_custom_titlebar, enable_events=True, key='-USE CUSTOM TITLEBAR-')],
                [sg.Col(layout_l), sg.Col(layout_r)],
                [sg.Text('Output:', size=(7,1), justification='r',pad=(0,0), font='Courier 10'),],
                [sg.Output(size=(96, 8), key='Output')],
                [sg.Button('Quit', key='Quit')]
            ]

    window = sg.Window('The PySimpleGUI Element List', layout, finalize=True, keep_on_top=True)

    # 事件循环  
    while True:  
        try:
            event, values = window.read()
            if event == 'Exit':  
                break
            if event == 'dht11':
                message = f"{TEM}°C   {HUM}%"
                window['Getvalue'].update(message)
            if event == 'ds18b20':
                message = f"{TEM}°C"
                window['Getvalue'].update(message)
            elif event == 'Quit':  
                print(f"See you.............")
                break
            elif event == 'Connect':
                SERVER_IP = "192.168.5.10"
                window['IP'].update(SERVER_IP)
            elif event == 'Disconnect':  
                SERVER_IP = "connectionless network service"
                window['IP'].update(SERVER_IP)
            elif event is None:
                print(f"xxxxxxxxxxxxxxxxxxxx")
                break
            elif event == 'LED':  
                print(f"LED-----------------") 
            # 处理其他事件...
        except Exception as e:
            window.close()
            print(f"An error occurred: {e}")
            return 0
    window.close()
    return 0  

def main():
    # theme参考/client/README
    if 0 == show_window('DefaultNoMoreNagging'):
        return

if __name__ == '__main__':
    main()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GAN:对抗生成网络【通俗易懂】

一、概述 对抗生成网络&#xff08;GAN&#xff09;是一种深度学习模型&#xff0c;由两个神经网络组成&#xff1a;生成器G和判别器D。这两个网络被训练来协同工作&#xff0c;以生成接近真实数据的新样本。 生成器的任务是接收一个随机噪声向量&#xff0c;并将其转换为与真…

【Web】DASCTF X GFCTF 2022十月挑战赛题解

目录 EasyPOP hade_waibo EasyLove BlogSystem EasyPOP 先读hint.php sorry.__destruct -> secret_code::secret() exp: $anew sorry(); $bnew secret_code(); $a->password"suibian"; $a->name"jay"; echo serialize($a); 真暗号啊&…

基于Java停车场管理系统设计与实现(源码+部署文档)

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…

即插即用模块之DO-Conv(深度过度参数化卷积层)详解

目录 一、摘要 二、核心创新点 三、代码详解 四、实验结果 4.1Image Classification 4.2Semantic Segmentation 4.3Object Detection 五、总结 论文&#xff1a;DOConv论文 代码&#xff1a;DOConv代码 一、摘要 卷积层是卷积神经网络(cnn)的核心组成部分。在本文中…

【Java虚拟机】简单易懂的ZGC原理分析

简单易懂的ZGC原理分析 GC垃圾收集器ZGC的特点ZGC相关技术Region染色指针 & 转发表 & 读屏障染色指针转发表读屏障 内存多重映射 ZGC流程详解ZGC与其他垃圾搜集器比较与CMS比较与G1比较 GC垃圾收集器 GC垃圾收集器的作用就是帮我们清理堆内存里面的垃圾&#xff0c;无…

第1章、react基础知识;

一、react学习前期准备&#xff1b; 1、基本概念&#xff1b; 前期的知识准备&#xff1a; 1.javascript、html、css&#xff1b; 2.构建工具&#xff1a;Webpack&#xff1a;https://yunp.top/init/p/v/1 3.安装node&#xff1a;npm&#xff1a;https://yunp.top/init/p/v/1 …

cmake制作并链接动静态库

cmake制作并链接动静态库 制作静态库add_library(库名称 STATIC 源文件1 [源文件2] ...)LIBRARY_OUTPUT_PATH指定库的生成路径 制作动态库add_library(库名称 SHARED 源文件1 [源文件2] ...) 连接动静态库link_libraries连接静态库link_directories到哪个路径去找库target_link…

UnityShader学习计划

1.安装ShaderlabVS,vs的语法提示 2. 常规颜色是fixed 3.FrameDebugger调试查看draw的某一帧的全部信息&#xff0c;能看到变量参数的值

雅马哈电钢琴YDP145

数据线&#xff1a;MIDI 琴可以通过MIDI、线直接连接手机&#xff0c;播放声音 琴通过线连接电脑&#xff0c;不能直接播放声音 https://www.bilibili.com/video/BV1ws4y1M7yw 操作&#xff1a; https://usa.yamaha.com/support/updates/yamaha_steinberg_usb_driver_for_win…

王道汽车4S企业管理系统 SQL注入漏洞复现

0x01 产品简介 王道汽车4S企业管理系统(以下简称“王道4S系统”)是一套专门为汽车销售和维修服务企业开发的管理软件。该系统是博士德软件公司集10余年汽车行业管理软件研发经验之大成,精心打造的最新一代汽车4S企业管理解决方案。 0x02 漏洞概述 王道汽车4S企业管理系统…

完美照片由构图决定,摄影构图基础到进阶

一、资料描述 本套摄影构图资料&#xff0c;大小1.04G&#xff0c;共有51个文件。 二、资料目录 新手必备-摄影构图技巧.doc 无忌版的《摄影构图学》.pdf 完美照片的十大经典拍摄技法.pdf 数码摄影曝光手边书.pdf 数码摄影不求人.30天学会数码摄影构图.pdf 数码单反摄影…

sheng的学习笔记-AI-决策树(Decision Tree)

AI目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 目录 什么是决策树 划分选择 信息增益 增益率 基尼指数 剪枝处理 预剪枝 后剪枝 连续值处理 另一个例子 基本步骤 排序 计算候选划分点集合 评估分割点 每个分割点都进行评估&#xff0c;找到最大信息增益的…

靠谱的大型相亲交友婚恋平台有哪些?相亲app软件前十名

靠谱交友软件&#xff0c;个人感觉还是要选择大型的&#xff0c;口碑好的进行选择&#xff0c;以下是我用过的婚恋平台&#xff0c;分享给大家 1、丛丛 这是我用的最久的一款脱单小程序&#xff0c;我老公就是在这个小程序找到的&#xff01;&#xff01;&#xff01; 这是一款…

CSS边框

目录 内容区&#xff08;content&#xff09;&#xff1a; 边框&#xff08;border&#xff09;&#xff1a; 前言&#xff1a; 示例&#xff1a; 内容区&#xff08;content&#xff09;&#xff1a; 内容区就是盒子里面用来存放东西的区域&#xff0c;里面你可以随便放如:…

计算机三级数据库技术备考笔记(十三)

第十三章 大规模数据库架构 分布式数据库 分布式数据库系统概述 分布式数据库系统是物理上分散、逻辑上集中的数据库系统。系统中的数据分布在物理位置不同的计算机上&#xff08;通常称为场地、站点或结点&#xff0c;本章均用场地来描述&#xff09;&#xff0c;由通信网络将…

大语言模型总结整理(不定期更新)

《【快捷部署】016_Ollama&#xff08;CPU only版&#xff09;》 介绍了如何一键快捷部署Ollama&#xff0c;今天就来看一下受欢迎的模型。 模型简介gemmaGemma是由谷歌及其DeepMind团队开发的一个新的开放模型。参数&#xff1a;2B&#xff08;1.6GB&#xff09;、7B&#xff…

VMware安装Red Hat7.9

1、下载Red Hat Enterprise Linux7.9版本 【百度网盘下载】 链接&#xff1a;https://pan.baidu.com/s/1567NfZRF48PBXfUqxumvDA 提取码&#xff1a;bm7u 2、在虚拟机中创建Red Hat7.9 【点击创建虚拟机】 【自定义高级】 【选择光盘映像安装】 全名自定义即可 【虚拟机命…

Dual-AMN论文翻译

Boosting the Speed of Entity Alignment 10: Dual Attention Matching Network with Normalized Hard Sample Mining 将实体对齐速度提高 10 倍&#xff1a;具有归一化硬样本挖掘的双重注意力匹配网络 ABSTRACT 寻找多源知识图谱(KG)中的等效实体是知识图谱集成的关键步骤&…

分享 WebStorm 2024 激活的方案,支持JetBrains全家桶

大家好&#xff0c;欢迎来到金榜探云手&#xff01; WebStorm公司简介 JetBrains 是一家专注于开发工具的软件公司&#xff0c;总部位于捷克。他们以提供强大的集成开发环境&#xff08;IDE&#xff09;而闻名&#xff0c;如 IntelliJ IDEA、PyCharm、和 WebStorm等。这些工具…

Zynq学习笔记--AXI 总线概述

目录 1. AXI总线概述 1.1 主要特点 1.2 通道功能 1.3 信号概览 2. AXI Interconnect 2.1 信号说明 2.2 内部结构 3. PS-PL AXI Interface 3.1 AXI FPD/LFP/ACP 3.2 Address Editor 3.3 地址空间 3.4 AXI-DDR 4. 通过ILA观察AXI信号 4.1 AXI 读通道 1. AXI总线概述…