Linux图形化编程dialog
admin
2023-07-27 13:40:08
0次

----------------------------本文地址:https://blog.51cto.com/woonli/2142606
----------------------------参考网址http://linuxcommand.org/lc3_adv_dialog.php

一、简介
dialog是Linux图形化自动脚本编程的工具,实现脚本中图形化,它是一个相当大而复杂的程序(它有近100个命令行选项),但与典型的图形用户界面相比,它是一个真正的轻量级。尽管如此,它仍然具有许多用户界面技巧;
二、使用条件
dialog在多数Linux发行版上已经默认安装如果没有安装,
rpm系列用以下的其中一个:
a、 yum install dialog -y
b、 rpm -vih dialog
deb系统用以下中的一个:
a、sudo apt-get install dialog
b、sudo dpkg -i dialog
三、dianlog帮助信息
dialog有很多命令选项,记忆困难,但如果理解了它,加上帮助信息,你会马上拥有她;dialog的帮助很简单,在终端中输入dialog命令即可;帮助信息如下:

cdialog (ComeOn Dialog!) version 1.3-20160828
Copyright 2000-2015,2016 Thomas E. Dickey
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

* Display dialog boxes from shell scripts *

Usage: dialog  { --and-widget  }
where options are "common" options, followed by "box" options

Special options:
  [--create-rc "file"]
Common options:
  [--ascii-lines] [--aspect ] [--backtitle ] [--beep]
  [--beep-after] [--begin  ] [--cancel-label ] [--clear]
  [--colors] [--column-separator ] [--cr-wrap] [--date-format ]
  [--default-button ] [--default-item ] [--defaultno]
  [--exit-label ] [--extra-button] [--extra-label ]
  [--help-button] [--help-label ] [--help-status] [--help-tags]
  [--hfile ] [--hline ] [--ignore] [--input-fd ]
  [--insecure] [--item-help] [--keep-tite] [--keep-window] [--last-key]
  [--max-input ] [--no-cancel] [--no-collapse] [--no-cr-wrap]
  [--no-items] [--no-kill] [--no-label ] [--no-lines] [--no-mouse]
  [--no-nl-expand] [--no-ok] [--no-shadow] [--no-tags] [--nook]
  [--ok-label ] [--output-fd ] [--output-separator ]
  [--print-maxsize] [--print-size] [--print-version] [--quoted]
  [--scrollbar] [--separate-output] [--separate-widget ] [--shadow]
  [--single-quoted] [--size-err] [--sleep ] [--stderr] [--stdout]
  [--tab-correct] [--tab-len ] [--time-format ] [--timeout ]
  [--title ] [--trace <file>] [--trim] [--version] [--visit-items]
  [--week-start <str>] [--yes-label <str>]
Box options:
  --buildlist    <text> <height> <width> <list-height> <tag1> <item1> <status1>...
  --calendar     <text> <height> <width> <day> <month> <year>
  --checklist    <text> <height> <width> <list height> <tag1> <item1> <status1>...
  --dselect      <directory> <height> <width>
  --editbox      <file> <height> <width>
  --form         <text> <height> <width> <form height> <label1> <l_y1> <l_x1> <item1> <i_y1> <i_x1> <flen1> <ilen1>...
  --fselect      <filepath> <height> <width>
  --gauge        <text> <height> <width> [<percent>]
  --infobox      <text> <height> <width>
  --inputbox     <text> <height> <width> [<init>]
  --inputmenu    <text> <height> <width> <menu height> <tag1> <item1>...
  --menu         <text> <height> <width> <menu height> <tag1> <item1>...
  --mixedform    <text> <height> <width> <form height> <label1> <l_y1> <l_x1> <item1> <i_y1> <i_x1> <flen1> <ilen1> <itype>...
  --mixedgauge   <text> <height> <width> <percent> <tag1> <item1>...
  --msgbox       <text> <height> <width>
  --passwordbox  <text> <height> <width> [<init>]
  --passwordform <text> <height> <width> <form height> <label1> <l_y1> <l_x1> <item1> <i_y1> <i_x1> <flen1> <ilen1>...
  --pause        <text> <height> <width> <seconds>
  --prgbox       <text> <command> <height> <width>
  --programbox   <text> <height> <width>
  --progressbox  <text> <height> <width>
  --radiolist    <text> <height> <width> <list height> <tag1> <item1> <status1>...
  --rangebox     <text> <height> <width> <min-value> <max-value> <default-value>
  --tailbox      <file> <height> <width>
  --tailboxbg    <file> <height> <width>
  --textbox      <file> <height> <width>
  --timebox      <text> <height> <width> <hour> <minute> <second>
  --treeview     <text> <height> <width> <list-height> <tag1> <item1> <status1> <depth2>...
  --yesno        <text> <height> <width>

Auto-size with height and width = 0. Maximize with height and width = -1.
Global-auto-size if also menu_height/list_height = 0.
</code></pre>
<p><strong>四、帮助信息解析</strong></p>
<pre><code>Usage: dialog <options> { --and-widget <options> }</code></pre>
<p>dialog 命令后是common options,即通用选项,是图形化框的一些个性化配置信息,依据是否需要可以省略;而--and-widget 是各类图形化部件,后边重点介绍,部件的options主要是针对部件的高、宽、内容、位置等参数的设置;<br/>如帮助信息中的</p>
<pre><code>  --buildlist    <text> <height> <width> <list-height> <tag1> <item1> <status1>...</code></pre>
<p>是为了构建并排显示两个列表。左侧的列表包含未选择的项目,右侧所选项目的列表。用户可以将项目从一个列表移动到另一个列表。<br/>在--buildlist的options中,</p>
<pre><code><text> <height> <width> <list-height> <tag1> <item1> <status1>...</code></pre>
<p>"<text>"是自定义框体名称,<height> <width>是框体的高和宽,默认值为0,默认时自适应大小,<list-height>是列表选择框的高度,<tag1> 是列表选择框的提示或者标题等;<item1>是列表的选项; <status1>“可能是选择该条目的状态,这个暂时也不清楚”<br/>具体的命令如下:</p>
<pre><code>dialog --title "列表框" --buildlist "选择" 0 0 15 "USER" "CPU" 0 "MEM" "MEM" 1</code></pre>
<p>具体效果如下<br/><img src="https://cache.yisu.com/upload/information/20200310/64/117188.jpg" alt="Linux图形化编程dialog"><br/>OK~,其他选项框也是类似的帮助信息;下面介绍部门options选项</p>
<ol>
<li>common options<br/>[--no-shadow]   禁止阴影出现在每个对话框的底部<br/>[--shadow]   应该是出现阴影效果[--insecure]   输入部件的密码时,明文显示不安全,使用星号来代表每个字符[--no-cancel]   设置在输入框,菜单,和复选框中,不显示“cancel”项<br/>[--clear]   完成清屏操作。在框体显示结束后,清除框体。这个参数只能单独使用,不能和别的参数联合使用。<br/>[--ok-label <str>]   覆盖使用“OK”按钮的标签,换做其他字符。<br/>[--cancel-label <str>]  功能同上<br/>[--backtitle <backtitle>] 指定的backtitle字符串显示在背景顶端。<br/>[--begin <y> <x>]   指定对话框左上角在屏幕的上的做坐标<br/>[--timeout <secs>]   超时(返回的错误代码),如果用户在指定的时间内没有给出相应动作,就按超时处理<br/>[--defaultno]   使的是默认值 yes/no,使用no<br/>[--sleep <secs>]<br/>[--stderr]  以标准错误方式输出<br/>[--stdout]  以标准方式输出<br/>[--default-item <str>]  设置在一份清单,表格或菜单中的默认项目。通常在框中的第一项是默认。</li>
<li>Windows options</li>
</ol>
<table>
<thead>
<tr>
<th>对话</th>
<th>选项</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>构建列表</td>
<td>--buildlist</td>
<td>并排显示两个列表。左侧的列表包含未选择的项目,右侧所选项目的列表。用户可以将项目从一个列表移动到另一个列表。</td>
</tr>
<tr>
<td>日历</td>
<td>--calendar</td>
<td>显示日历并允许用户选择日期。</td>
</tr>
<tr>
<td>清单</td>
<td>--checklist</td>
<td>显示选项列表,并允许用户选择一个或多个项目。</td>
</tr>
<tr>
<td>目录选择</td>
<td>--dselect</td>
<td>显示目录选择对话框。</td>
</tr>
<tr>
<td>编辑框</td>
<td>--editbox</td>
<td>显示基本文本文件编辑器。</td>
</tr>
<tr>
<td>形成</td>
<td>--form</td>
<td>允许用户在多个字段中输入文本。</td>
</tr>
<tr>
<td>文件选择</td>
<td>--fselect</td>
<td>文件选择对话框。</td>
</tr>
<tr>
<td>测量</td>
<td>--gauge</td>
<td>显示进度指示器,显示完成百分比。</td>
</tr>
<tr>
<td>信息框</td>
<td>--infobox</td>
<td>显示消息(带有可选的定时暂停)并终止。</td>
</tr>
<tr>
<td>输入框</td>
<td>--inputbox</td>
<td>提示用户输入/编辑文本字段。</td>
</tr>
<tr>
<td>菜单框</td>
<td>--menubox</td>
<td>显示选项列表。</td>
</tr>
<tr>
<td>消息框</td>
<td>--msgbox</td>
<td>显示文本消息并等待用户响应。</td>
</tr>
<tr>
<td>密码箱</td>
<td>--passwordbox</td>
<td>与输入框类似,但隐藏用户的条目。</td>
</tr>
<tr>
<td>暂停</td>
<td>--pause</td>
<td>显示文本消息和倒数计时器。当计时器用完或用户按下“确定”或“取消”按钮时,对话框将终止。</td>
</tr>
<tr>
<td>程序框</td>
<td>--programbox</td>
<td>显示管道命令的输出。命令完成后,对话框将等待用户按下OK按钮。</td>
</tr>
<tr>
<td>进度框</td>
<td>--progressbox</td>
<td>类似于程序框,除了对话框在管道命令完成时终止,而不是等待用户按OK。</td>
</tr>
<tr>
<td>电台名单</td>
<td>--radiolist</td>
<td>显示选项列表,并允许用户选择单个项目。之前选择的任何项目都将被取消选中。</td>
</tr>
<tr>
<td>范围框</td>
<td>--rangebox</td>
<td>允许用户使用基于键盘的滑块在指定范围内选择数值。</td>
</tr>
<tr>
<td>尾箱</td>
<td>--tailbox</td>
<td>显示具有实时更新的文本文件。像命令一样工作tail</td>
<td>-f。</td>
</tr>
<tr>
<td>文本框</td>
<td>--textbox</td>
<td>简单的文本文件查看器。支持许多相同的键盘命令less。</td>
</tr>
<tr>
<td>时间盒</td>
<td>--timebox</td>
<td>用于输入时间的对话框。</td>
</tr>
<tr>
<td>树视图</td>
<td>--treeview</td>
<td>显示树形层次结构中的项目列表。</td>
</tr>
<tr>
<td>是/否盒子</td>
<td>--yesno</td>
<td>显示文字信息,让用户有机会回答“是”或“否”。</td>
</tr>
</tbody>
</table>
<p><strong>五、在shell脚本中使用</strong><br/>dialog图形化主要是在运维过程中图形自动化脚本人机交互时使用,图形化的选择或提示等,可操作行更强。<br/><strong>dialog在脚本中使用需要主要以下两点:</strong><br/><strong>a、dialog在绘制会话框本身时使用标准输出作为终端显示,所以在会话框上的输入(例如输入到输入框中的字符串)通常通过标准错误返回,这就导致了dialog获取数据的问题,要解决该问题,需要将错误输出转换为标准输出文件提示符;解决该问题的方法有两种:<br/>1)、使用临时存储文件<br/>2)使用文件描述符<br/>b、dialog图形化中的状态码,在使用dialog前先了解状态码;如“OK”为0,“NO”为1,"ESC"为255,还可以定义其他状态码,如帮助信息等等。</strong><br/><strong>六、脚本实例</strong><br/>本脚本实例中为解决错误输出转换问题使用文件描述符,基本上多数dialog脚本中都使用文件描述符;格式为<br/>exec 3>&1<br/>dialog --widdget options 2>&1 1>&3<br/>exec 3>&1;<br/>该命令包括将描述符2(stderr)重定向为描述符1的副本,最后,通过复制包含备份副本的描述符3,将描述符1恢复为其原始值。可能不会立即显示的是为什么需要最后一次重定向。在子shell中,标准输出(描述符1)不指向控制终端。相反,它指向一个将其内容传递给变量的管道result。由于dialog需要标准输出指向终端以便它可以显示输入框,我们必须将标准错误重定向到标准输出(以便输出dialog结束于result 变量),然后将标准输出重定向回控制终端。<br/><strong>脚本实例:</strong></p>
<pre><code>#!/bin/bash
#Dialog use case
#Author by woon

## Define the dialog exit status codes
#可以不定义退出码。直接使用值也行。
: ${DIALOG_OK=0}
: ${DIALOG_CANCEL=1}
: ${DIALOG_HELP=2}
: ${DIALOG_EXTRA=3}
: ${DIALOG_ITEM_HELP=4}
: ${DIALOG_ESC=255}

#定义msgbox函数
display_box() {
dialog --title "$1" \
    --no-collapse \
    --msgbox "$res" 0 0
    }
while true;do
    #将标准输出复制一份到文件描述符3,  
    exec 3>&1
    selection=$(dialog --title "系统监测" \
        --clear \
        --ok-label "Submit" \
        --cancel-label "Exit" \
        --menu "选择监测项:" 0 0 10 \
        "1" "当前用户占用资源情况" \
        "2" "当前磁盘使用情况" \
        "3" "CPU相关信息" \
        "4" "MEM相关信息" \
        2>&1 1>&3   #将错误输出转换为标准输出
        )

    exit_status=$?
    exec 3>&- #关闭文件描述符3
    case $exit_status in 
        $DIALOG_CANCEL)
        clear
        echo "程序终止"
        exit
        ;;
    $DIALOG_ESC)
    clear 
    echo "程序终止"
    exit 1
    ;;
esac
case $selection in 
    0)
        clear
        echo "程序终止"
        ;;
    1)
        pcpu=$(ps -eo user,pcpu,pmem | awk -v user=$USER '$1==user{print $0}'|awk '{pcpu+=$2}END{print pcpu}')
        pmem=$(ps -eo user,pcpu,pmem | awk -v user=$USER '$1==user{print $0}'|awk '{pcpu+=$2}END{print pcpu}')
        res="当前用户占用CPU:"$pcpu"\n当前用户占用内存:"$pmem
        display_box "当前用户占用资源情况"
        ;;
    2)
        res=$(df -h)
        display_box "当前磁盘使用情况"
        ;;
    3)
        res=$(dmesg | grep CPU | awk -F "] " '{print $2}')
        display_box "CPU硬件信息"
        ;;
    4)
        res=$(head -10 /proc/meminfo )
        display_box "系统内存信息"
        ;;
esac
done
</code></pre>                <!--end::Text-->
            </div>
            <!--end::Description-->
            <div class="mt-5">
                <!--关键词搜索-->
                            </div>
            <div class="mt-5">
                <p class="fc-show-prev-next">
                    <strong>上一篇:</strong><a href="/kaifa/show-902581.html">我来教大家微乐辽宁麻将辅助器安卓版下载,中至吉安麻将原来有挂,wepoker轻量版透视挂有吗</a><br>
                </p>
                <p class="fc-show-prev-next">
                    <strong>下一篇:</strong><a href="/kaifa/show-902611.html">IDEA中使用SBT构建SCALA项目</a>                </p>
            </div>
            <!--begin::Block-->
            <div class="d-flex flex-stack mb-2 mt-10">
                <!--begin::Title-->
                <h3 class="text-dark fs-5 fw-bold text-gray-800">相关内容</h3>
                <!--end::Title-->
            </div>
            <div class="separator separator-dashed mb-9"></div>
            <!--end::Block-->
            <div class="row g-10">
                

            </div>


        </div>
        <!--end::Table widget 14-->
    </div>
    <!--end::Col-->

    <!--begin::Col-->
    <div class="col-xl-4 mt-0">
        <!--begin::Chart Widget 35-->
        <div class="card card-flush h-md-100">
            <!--begin::Header-->
            <div class="card-header pt-5 ">
                <!--begin::Title-->
                <h3 class="card-title align-items-start flex-column">
                    <!--begin::Statistics-->
                    <div class="d-flex align-items-center mb-2">
                        <!--begin::Currency-->
                        <span class="fs-5 fw-bold text-gray-800 ">热门资讯</span>
                        <!--end::Currency-->
                    </div>
                    <!--end::Statistics-->
                </h3>
                <!--end::Title-->
            </div>
            <!--end::Header-->
            <!--begin::Body-->
            <div class="card-body pt-3">

                                <!--begin::Item-->
                <div class="d-flex flex-stack mb-7">
                    <!--begin::Symbol-->
                    <div class="symbol symbol-60px symbol-2by3 me-4">
                        <div class="symbol-label" style="background-image: url('/uploadfile/[db:缩略图]')"></div>
                    </div>
                    <!--end::Symbol-->
                    <!--begin::Title-->
                    <div class="m-0">
                        <a href="/weixiu/show-14537931.html" class="text-dark fw-bold text-hover-primary fs-6">空调连续工作多久需要停机休息</a>
                        <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...</span>
                    </div>
                    <!--end::Title-->
                </div>
                                <!--begin::Item-->
                <div class="d-flex flex-stack mb-7">
                    <!--begin::Symbol-->
                    <div class="symbol symbol-60px symbol-2by3 me-4">
                        <div class="symbol-label" style="background-image: url('/uploadfile/[db:缩略图]')"></div>
                    </div>
                    <!--end::Symbol-->
                    <!--begin::Title-->
                    <div class="m-0">
                        <a href="/weixiu/show-14537930.html" class="text-dark fw-bold text-hover-primary fs-6">空调哪个符号是除湿的</a>
                        <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...</span>
                    </div>
                    <!--end::Title-->
                </div>
                                <!--begin::Item-->
                <div class="d-flex flex-stack mb-7">
                    <!--begin::Symbol-->
                    <div class="symbol symbol-60px symbol-2by3 me-4">
                        <div class="symbol-label" style="background-image: url('/uploadfile/[db:缩略图]')"></div>
                    </div>
                    <!--end::Symbol-->
                    <!--begin::Title-->
                    <div class="m-0">
                        <a href="/weixiu/show-14537929.html" class="text-dark fw-bold text-hover-primary fs-6">格力空调多长时间加一次氟利昂</a>
                        <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...</span>
                    </div>
                    <!--end::Title-->
                </div>
                                <!--begin::Item-->
                <div class="d-flex flex-stack mb-7">
                    <!--begin::Symbol-->
                    <div class="symbol symbol-60px symbol-2by3 me-4">
                        <div class="symbol-label" style="background-image: url('/uploadfile/[db:缩略图]')"></div>
                    </div>
                    <!--end::Symbol-->
                    <!--begin::Title-->
                    <div class="m-0">
                        <a href="/weixiu/show-14537928.html" class="text-dark fw-bold text-hover-primary fs-6">空调用多长时间需要加氟一次</a>
                        <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...</span>
                    </div>
                    <!--end::Title-->
                </div>
                                <!--begin::Item-->
                <div class="d-flex flex-stack mb-7">
                    <!--begin::Symbol-->
                    <div class="symbol symbol-60px symbol-2by3 me-4">
                        <div class="symbol-label" style="background-image: url('/uploadfile/202609/83c0c0800a58e3b.jpg')"></div>
                    </div>
                    <!--end::Symbol-->
                    <!--begin::Title-->
                    <div class="m-0">
                        <a href="/news/show-14537927.html" class="text-dark fw-bold text-hover-primary fs-6">格调生活·C标思享荟:卡萨帝在...</a>
                        <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...</span>
                    </div>
                    <!--end::Title-->
                </div>
                                <!--begin::Item-->
                <div class="d-flex flex-stack mb-7">
                    <!--begin::Symbol-->
                    <div class="symbol symbol-60px symbol-2by3 me-4">
                        <div class="symbol-label" style="background-image: url('/uploadfile/202609/bd5bdfc6ba7da8c.jpg')"></div>
                    </div>
                    <!--end::Symbol-->
                    <!--begin::Title-->
                    <div class="m-0">
                        <a href="/news/show-14537926.html" class="text-dark fw-bold text-hover-primary fs-6">品牌价值破千亿、高端份额持续领...</a>
                        <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...</span>
                    </div>
                    <!--end::Title-->
                </div>
                                <!--begin::Item-->
                <div class="d-flex flex-stack mb-7">
                    <!--begin::Symbol-->
                    <div class="symbol symbol-60px symbol-2by3 me-4">
                        <div class="symbol-label" style="background-image: url('/uploadfile/[db:缩略图]')"></div>
                    </div>
                    <!--end::Symbol-->
                    <!--begin::Title-->
                    <div class="m-0">
                        <a href="/weixiu/show-14537925.html" class="text-dark fw-bold text-hover-primary fs-6">空调主板坏了修800还是换新的</a>
                        <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...</span>
                    </div>
                    <!--end::Title-->
                </div>
                                <!--begin::Item-->
                <div class="d-flex flex-stack mb-7">
                    <!--begin::Symbol-->
                    <div class="symbol symbol-60px symbol-2by3 me-4">
                        <div class="symbol-label" style="background-image: url('/uploadfile/[db:缩略图]')"></div>
                    </div>
                    <!--end::Symbol-->
                    <!--begin::Title-->
                    <div class="m-0">
                        <a href="/weixiu/show-14537924.html" class="text-dark fw-bold text-hover-primary fs-6">空调开多久需要休息多长时间</a>
                        <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...</span>
                    </div>
                    <!--end::Title-->
                </div>
                                <!--begin::Item-->
                <div class="d-flex flex-stack mb-7">
                    <!--begin::Symbol-->
                    <div class="symbol symbol-60px symbol-2by3 me-4">
                        <div class="symbol-label" style="background-image: url('/uploadfile/[db:缩略图]')"></div>
                    </div>
                    <!--end::Symbol-->
                    <!--begin::Title-->
                    <div class="m-0">
                        <a href="/weixiu/show-14537923.html" class="text-dark fw-bold text-hover-primary fs-6">中央空调多长时间清洗一次</a>
                        <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...</span>
                    </div>
                    <!--end::Title-->
                </div>
                                <!--begin::Item-->
                <div class="d-flex flex-stack mb-7">
                    <!--begin::Symbol-->
                    <div class="symbol symbol-60px symbol-2by3 me-4">
                        <div class="symbol-label" style="background-image: url('/uploadfile/[db:缩略图]')"></div>
                    </div>
                    <!--end::Symbol-->
                    <!--begin::Title-->
                    <div class="m-0">
                        <a href="/weixiu/show-14537922.html" class="text-dark fw-bold text-hover-primary fs-6">中央空调氟利昂多久加一次</a>
                        <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...</span>
                    </div>
                    <!--end::Title-->
                </div>
                
            </div>
            <!--end::Body-->
        </div>
        <!--end::Chart Widget 35-->
    </div>
    <!--end::Col-->
</div>



</div>
<!--end::Content container-->
</div>
<!--end::Content-->
</div>
<!--end::Content wrapper-->
<!--begin::Footer-->
<div id="kt_app_footer" class="app-footer">
    <!--begin::Footer container-->
    <div class="app-container container-xxl d-flex flex-column flex-md-row flex-center flex-md-stack py-3">
        <!--begin::Copyright-->
        <div class="text-dark order-2 order-md-1">
            <span class="text-muted fw-semibold me-1">2026 ©</span>
            太卓网<a href="http://www.yexian114.com/">叶县生活网</a> <a href="https://www.wxx86.cn/">编程知识网</a>  <a href="http://www.kcwzh.com/">开创游戏网</a> <a href="https://www.caiding5.net">菜丁网</a><a href="http://cn.office369.com">奥飞商务网</a>  <a href="http://www.zlnznjj.com/">众乐知识网</a><a href="http://www.lhjia.com/">乐活家</a><a href="http://www.nengyuan100.com/">能源100网</a> <a href="http://it.tdroid.net/">泰达科技</a><a href="http://cn.tdroid.net/">太卓开发网</a><a href="http://cn.yuansudz.com/">元素科技网</a><a href="http://www.80hlw.com/">八零商务网</a><a href="http://game.tdroid.net/">土豆游戏网</a>        </div>
        <!--end::Copyright-->
        <!--begin::Menu-->
        <ul class="menu menu-gray-600 menu-hover-primary fw-semibold order-1">
                        <li class="menu-item">
                <a href="/news" target="_blank" class="menu-link px-2">科技资讯</a>
            </li>
                        <li class="menu-item">
                <a href="/jishu" target="_blank" class="menu-link px-2">技术分享</a>
            </li>
                        <li class="menu-item">
                <a href="/kaifa" target="_blank" class="menu-link px-2">程序开发</a>
            </li>
                        <li class="menu-item">
                <a href="/weixiu" target="_blank" class="menu-link px-2">设备维修</a>
            </li>
                    </ul>
        <!--end::Menu-->
    </div>
    <!--end::Footer container-->
</div>
<!--end::Footer-->
</div>
<!--end:::Main-->
</div>
<!--end::Wrapper-->
</div>
<!--end::Page-->
</div>
<!--end::App-->
<div id="kt_scrolltop" class="scrolltop" data-kt-scrolltop="true">
    <!--begin::Svg Icon | path: icons/duotune/arrows/arr066.svg-->
    <span class="svg-icon">
        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
            <rect opacity="0.5" x="13" y="6" width="13" height="2" rx="1" transform="rotate(90 13 6)" fill="currentColor"></rect>
            <path d="M12.5657 8.56569L16.75 12.75C17.1642 13.1642 17.8358 13.1642 18.25 12.75C18.6642 12.3358 18.6642 11.6642 18.25 11.25L12.7071 5.70711C12.3166 5.31658 11.6834 5.31658 11.2929 5.70711L5.75 11.25C5.33579 11.6642 5.33579 12.3358 5.75 12.75C6.16421 13.1642 6.83579 13.1642 7.25 12.75L11.4343 8.56569C11.7467 8.25327 12.2533 8.25327 12.5657 8.56569Z" fill="currentColor"></path>
        </svg>
    </span>
    <!--end::Svg Icon-->
</div>
<!--begin::Javascript-->
<script>var hostUrl = "/static/default/pc/";</script>
<!--begin::Global Javascript Bundle(mandatory for all pages)-->
<script src="/static/default/pc/plugins/global/plugins.bundle.js"></script>
<script src="/static/default/pc/js/scripts.bundle.js"></script>
<!--end::Global Javascript Bundle-->

<!--end::Javascript-->
</body>
<!--end::Body-->
</html>