python图形界面设计工具,python的图形界面gui编程

大家好,小编为大家解答python编写图形化界面的工具的问题。很多人还不知道python图形界面设计工具,现在让我们一起来看看吧!

1.根窗体

        (1)创建根窗体对象

        ①tkinter.Tk():创建一个根窗体对象。使用后会立即显示窗口,别忘记用root接收Python中Turtle画蝴蝶。

        ②root.title(name):设置根窗体的标题。

        ③root.geometry('aaaxbbb'):设置根窗体的尺寸。注意这里的乘号是小写字母x,aaa为宽,bbb为高。

        ④root.mainloop():监听上方代码,封锁下方代码,直到窗口被关闭。

import tkinter

root = tkinter.Tk()
root.title('myapp')    #不要写成root.title='myapp',这与c++窗体不同
root.geometry('500x300')
root.mainloop()

        (2)控件布局

        .pack()方法(用Label举例)

        ①tkinter.Label(root,..,text,fg,relief):创建一个标签对象。其中,root是根窗体;text是标签文本;fg是标签颜色,各种颜色用英文表示;relief是标签边缘属性,relief=tkinter.GROOVE为边缘凹陷属性。注意Label中L为大写。

        ②label.pack():将label放置在根窗体上。放置的规则为:如果不加参数的默认方式,将以不重叠且紧挨着的形式从上往下纵向排列,水平位置居中。

        ③label.pack()可设置fill和side等参数。其中,参数fill 可取值:fill=X,fill=Y或fill=BOTH,分别表示允许控件向水平方向、垂直方向或二维方向将剩余空间填充满。参数 side 可取值:side=TOP(默认),side=LEFT,side=RIGHT,side=BOTTOM,分别表示本控件实例的布局相对于下一个控件实例的方位。

import tkinter

root=tkinter.Tk()
lbred=tkinter.Label(root,text='red',fg='red',relief=tkinter.GROOVE)
lbred.pack()
lbgreen=tkinter.Label(root,text='绿',fg='green',relief=tkinter.GROOVE)
lbgreen.pack(side=tkinter.LEFT)
lbblue=tkinter.Label(root,text='blue',fg='blue',relief=tkinter.GROOVE)
lbblue.pack(fill=tkinter.BOTH)
root.mainloop()

         .grid()方法

        基于表格布局,在相应表格中放置放置控件。其中一些参数意义如下:
        ①column,row:控件的行、列坐标,默认为0(注意坐标从0开始)。

        ②columnspan,rowspan:控件跨越的行数、列数,默认为1

        ③ipadx,ipady:实例控件所呈现区域内的像素数,定义控件的大小。

        ④padx,pady:实例控件所在单元格的大小,定义单元格的大小。

        .place()方法

        根据空间在父容器中的相对位置进行布局:

        ①x,y:控件相对于根窗体下的坐标。

        ②relx,rely:控件相对与根窗体下的相对位置。

        ③height和width:控件的高度和宽度。(单位为像素)。

        ④relheight和relwidth:控件相对于根窗体的相对高度和宽度。

注:可以和grid()方法混合使用

import tkinter

root = tkinter.Tk()
root.title('myapp')    #不要写成root.title='myapp',这与c++窗体不同
root.geometry('500x300')
msg1=tkinter.Message(root,text='我是一行文字我是另一行文字',relief=tkinter.GROOVE)
msg1.place(relx=0.2,rely=0.4,relwidth=0.6,relheight=0.4)
root.mainloop()

2.常见控件

        (1)常用控件简介

                常用空间如下:

控件名称作用
Button按钮单击触发事件
Canvas画布绘制图形或绘制特殊控件
Checkbutton复选框多项选择
Entry输入框接收单行文本输入
Frame框架用于控件分组
Label标签单行文本显示
Listbox列表框显示文本列表
Menu      菜单创建菜单命令
Message消息多行文本标签,与Label 用法类似
Radiobutton单选框从互斥的多个选项中做单项选择
Scale滑块 鼠标拖动数值变化
Scrollbar滑动条即滚动条
Text文本框接受或输出显示多行文本
Toplevel新建窗体容器在顶层新建窗体容器

                 控件共同属性:

属性 说明取值
anchor文本的起始位置CENTER(默认),E,S,W,N,NE,SE,SW,NW
bg背景色'red','green'等
bd加粗
cursor鼠标悬停光标-
font字体例如:('华文新魏',32)
fg        前景色'red','green'等
height高(文本控件单位为行,不是像素)数字
image显示图像
justify多行文本对齐方式CENTER(默认),LEFT,RIGHT,TOP,BOTTOM
padx水平扩展像素
pady垂直扩展像素
relief边界样式FLAT,RAISED,SUNKEN,GROOVE,RIDGE
state控件实例状态是否可用NORMAL(默认),DISABLED
width宽(文本控件的单位为行,不是像素)
from tkinter import *
root=Tk()
lb = Label(root,text='hello world!',\
        bg='#00ffff',\
        fg='green',\
        font=('微软雅新',32),\
        relief=GROOVE,\
        width=20,\
        height=2)
lb.pack()
root.mainloop()

注:width和height单位为列或行,这是因为用pack()或grid()放置时按表格的单位给出。若用place()放置,可以在place参数中设置其控件大小,此时单位为像素。

        (2)文本输入和输出相关控件

        .标签(Label)和消息(Message):Label显示单行文本,Message显示多行文本。其余属性基本一致。

        text属性只能用于第一次呈现时的固定文本。若需文本变更,有以下两种方法:

        ①用configure()方法改变text的值;

        ②定义tkinter的内部类型变量var=StringVar(),改变其值也可使文本发生变化。

        方法一:用configure()方法改变text的值

from tkinter import *
import time

root=Tk()
root.geometry('500x300')

def gettime():
        nowtime=time.strftime("%H:%M:%S")
        lb.config(text=nowtime)
        root.after(1000,gettime) #1000ms后调用gettime()函数

if __name__=='__main__':
        root.title('time')
        lb=Label(root,text='',fg='red',font=('微软雅新',80))
        lb.pack()
        gettime()
        root.mainloop()

注:样例中用了config(),实际上configure()有同样作用。关于它们的差别,在使用中没有找出差别,网上资料查找也无果。

          方法二:利用textvariable变量属性来实现文本变化。

        

from tkinter import *
import time
root=Tk()
root.geometry('500x300')

def gettime():
        nowtime=time.strftime("%H:%M:%S")
        #lb.configure(text=nowtime,fg='green')
        var.set(nowtime)
        root.after(1000,gettime) #1000ms后调用gettime()函数

if __name__=='__main__':
        root.title('time')
        var=StringVar() #创建一个特殊变量对象
        lb=Label(root,textvariable=var,fg='red',font=('微软雅新',80)) #注意这里定义Label时定义textvariable而不是text
        lb.pack()
        gettime()
        root.mainloop()

        .文本框(Text)

        文本框方法如下:

方法功能
delete(起始位置,[,终止位置])删除指定区域文本
get(起始位置,[,终止位置])获取指定区域文本
insert(位置,[,字符串]...)将文本插入到指定位置
see(位置)在指定位置是否可见文本,返回布尔值
index(标记)返回标记所在的行和列
mark_names()返回所有标记名称
mark_set(标记,位置)在指定位置设置标记
mark_unset(标记)去除标记

        上表位置的取值可为整数,浮点数或END(末尾),例如0.0表示第0列第0行

from tkinter import *
import time
import datetime

root=Tk()
root.geometry('500x300')

def gettime():
        nowtime=str(datetime.datetime.now())+'\n'
        txt.insert(END,nowtime)
        root.after(1000,gettime) #1000ms后调用gettime()函数

if __name__=='__main__':
        root.title('timetext')
        txt=Text(root)
        txt.pack()
        gettime()
        root.mainloop()

        .输入框(Entry):接受单行文本输入的控件。通常只用get()和delete()两个方法,delete(0,END)可清空输入框。

        (3)按钮(Button)

         button相应鼠标单击事件。相应的事件函数需先定义好,然后用以下两种方法调用函数。

        .直接调用函数。command=函数名。注意函数名后加括号不加参数

        .利用匿名函数调用函数和传递参数。参数的表达式为,“command=lambda”:函数名(参数列表)。例如:“command=lambda:run2(inp1.get(),inp2.get())”。

from tkinter import *
 
def run1():
     a = float(inp1.get())
     b = float(inp2.get())
     s = '%0.2f+%0.2f=%0.2f\n' % (a, b, a + b)
     txt.insert(END, s)   # 追加显示运算结果
     inp1.delete(0, END)  # 清空输入
     inp2.delete(0, END)  # 清空输入
 
def run2(x, y):
     a = float(x)
     b = float(y)
     s = '%0.2f+%0.2f=%0.2f\n' % (a, b, a + b)
     txt.insert(END, s)   # 追加显示运算结果
     inp1.delete(0, END)  # 清空输入
     inp2.delete(0, END)  # 清空输入
 
root = Tk()
root.geometry('460x240')
root.title('简单加法器')
 
lb1 = Label(root, text='请输入两个数,按下面两个按钮之一进行加法计算')
lb1.place(relx=0.1, rely=0.1, relwidth=0.8, relheight=0.1)
inp1 = Entry(root)
inp1.place(relx=0.1, rely=0.2, relwidth=0.3, relheight=0.1)
inp2 = Entry(root)
inp2.place(relx=0.6, rely=0.2, relwidth=0.3, relheight=0.1)
 
# 方法-直接调用 run1()
btn1 = Button(root, text='方法一', command=run1)
btn1.place(relx=0.1, rely=0.4, relwidth=0.3, relheight=0.1)
 
# 方法二利用 lambda 传参数调用run2()
btn2 = Button(root, text='方法二', command=lambda: run2(inp1.get(), inp2.get()))
btn2.place(relx=0.6, rely=0.4, relwidth=0.3, relheight=0.1)
 
# 在窗体垂直自上而下位置60%处起,布局相对窗体高度40%高的文本框
txt = Text(root)
txt.place(rely=0.6, relheight=0.4)
 
root.mainloop()

        (4)单选按钮(Radiobutton)

        排除具有共有属性外,还具有显示文本(text)、返回变量(variable)、返回值(value)、响应函数名(command)等重要属性。响应函数名“command=函数名”的用法与Button相同,函数名最后不要加括号。

        返回变量variable=var通常应预先声明变量的类型var=IntVar()或var=StringVar(),在所调用的函数中方可用var.get()方法获取被选中实例的value值。

from tkinter import *
def Mysel():
      dic = {0:'甲',1:'乙',2:'丙'}
      s = "您选了" + dic.get(var.get()) + "项"
      lb.config(text = s)
 
root = Tk()
root.title('单选按钮')
lb = Label(root)
lb.pack()
 
var = IntVar()
rd1 = Radiobutton(root,text="甲",variable=var,value=0,command=Mysel)
rd1.pack()
 
rd2 = Radiobutton(root,text="乙",variable=var,value=1,command=Mysel)
rd2.pack()
 
rd3 = Radiobutton(root,text="丙",variable=var,value=2,command=Mysel)
rd3.pack()
 
root.mainloop()

        (5)复选框:(Checkbutton)

        该控件除具有共有属性外,还具有显示文本(text)、返回变量(variable)、选中返回值(onvalue)和未选中默认返回值(offvalue)等重要属性。

        返回变量variable=var 通常可以预先逐项分别声明变量的类型var=IntVar() (默认)或 var=StringVar(), 在所调用的函数中方可分别调用 var.get()方法 取得被选中实例的 onvalue或offvalue值。


from tkinter import *
import tkinter
 
def run():
     if(CheckVar1.get()==0 and CheckVar2.get()==0 and CheckVar3.get()==0 and CheckVar4.get()==0):
         s = '您还没选择任何爱好项目'
     else:
         s1 = "足球" if CheckVar1.get()==1 else ""
         s2 = "篮球" if CheckVar2.get() == 1 else ""
         s3 = "游泳" if CheckVar3.get() == 1 else ""
         s4 = "田径" if CheckVar4.get() == 1 else ""
         s = "您选择了%s %s %s %s" % (s1,s2,s3,s4)
     lb2.config(text=s)
 
root = tkinter.Tk()
root.title('复选框')
lb1=Label(root,text='请选择您的爱好项目')
lb1.pack()
 
CheckVar1 = IntVar()
CheckVar2 = IntVar()
CheckVar3 = IntVar()
CheckVar4 = IntVar()
 
ch1 = Checkbutton(root,text='足球',variable = CheckVar1,onvalue=1,offvalue=0)
ch2 = Checkbutton(root,text='篮球',variable = CheckVar2,onvalue=1,offvalue=0)
ch3 = Checkbutton(root,text='游泳',variable = CheckVar3,onvalue=1,offvalue=0)
ch4 = Checkbutton(root,text='田径',variable = CheckVar4,onvalue=1,offvalue=0)
 
ch1.pack()
ch2.pack()
ch3.pack()
ch4.pack()
 
btn = Button(root,text="OK",command=run)
btn.pack()
 
lb2 = Label(root,text='')
lb2.pack()
root.mainloop()

        (6)列表框(Listbox)与 组合框(Combobox)

        . 列表框(Listbox)

方法功能描述
curselection()返回光标选中项目编号的元组,注意并不是单个的整数
delete(起始位置,终止位置)删除项目,终止位置可省略,全部清空为delete(0,END)
get(起始位置,终止位)返回范围所含项目文本的元组,终止位置可忽略
insert(位置,项目元素)插入项目元素(若有多项,可用列表或元组类型赋值),若位置为END,则将项目元素添加在最后
size()返回列表框行数

        列表框实质上就是将Python 的列表类型数据可视化呈现,在程序实现时,也可直接对相关列表数据进行操作,然后再通过列表框展示出来 。

from tkinter import *

root=Tk()
root.geometry('500x300')

def init():
        list=['数学','物理','化学','语文','外语']
        listbox.delete(0,END)
        for item in list:
                listbox.insert(END,item)
        return

def insert():
        if entry.get() != '':
                if listbox.curselection() !=():
                        id=listbox.curselection()[0]
                        listbox.insert(id,entry.get())
                else:
                        listbox.insert(END,entry.get())
        return
def change():
        if entry.get() !='':
                if listbox.curselection() != ():
                        id=listbox.curselection()[0]
                        listbox.delete(id)
                        listbox.insert(id,entry.get())
        return
def delete():
        if listbox.curselection() != ():
                listbox.delete(listbox.curselection())
        return
def clear():
        listbox.delete(0,END)
        return

if __name__=='__main__':
        root.title('列表框实验')
        fm1=Frame(root)
        fm2=Frame(root)
        fm1.place(relx=0.0)
        fm2.place(relx=0.5)
        listbox=Listbox(fm1)
        listbox.pack()
        entry=Entry(fm2)
        entry.pack()
        btn1=Button(fm2,text='初始化',command=init)
        btn2=Button(fm2,text='插入',command=insert)
        btn3=Button(fm2,text='修改',command=change)
        btn4=Button(fm2,text='删除',command=delete)
        btn5=Button(fm2,text='清空',command=clear)
        btn1.pack(fill=X)
        btn2.pack(fill=X)
        btn3.pack(fill=X)
        btn4.pack(fill=X)
        btn5.pack(fill=X)
        root.mainloop()

        . 组合框(Combobox)

        该控件并不包含在 tkinter 模块中,而是与 TreeView、Progressbar、Separator等控件一同包含在tkinter 的子模块ttk中。因此使用该控件前,应先from tkinter.ttk import *。

from tkinter import *
from tkinter.ttk import *
root=Tk()
root.geometry('500x300')

def cul(event): #注意一定要传递一个参数,将来这个参数代表实例本身
        c=cb.current()
        try:
                a=float(input1.get())
                b=float(input2.get())
        except:
                return
        dict={0:a+b,1:a-b,2:a*b,3:a/b}
        lb.configure(text=str(dict.get(c)))
        return

if __name__=='__main__':
        root.title('四则运算')
        input1=Entry(root)
        input2=Entry(root)
        input1.place(relx=0.1,rely=0.1)
        input2.place(relx=0.5,rely=0.1)
        cb=Combobox(root,values=['加','减','乘','除'])
        cb.place(relx=0.1,rely=0.5)
        cb.bind('<<ComboboxSelected>>',cul) #设置复选框被选择的相应函数
        lb=Label(root)
        lb.place(relx=0.5,rely=0.5)
        root.mainloop()

        指定变量var=StringVar(),并设置实例属性 textvariable = var,values=[列表...]。组合框控件常用方法有:获得所选中的选项值get()和获得所选中的选项索引current()。

        :定义的cur()函数必须带一个参数,名字可以任意。因为当定义<<ComboboxSelected>>事件的相应函数时,也将实例cb传入了进去。

        (7)滑块:(Scale)

        滑块(Scale)是一种直观地进行数值输入的交互控件。其主要属性见下表:

属性功能描述
from_起始值(最小可取值)
lable标签文字,默认为无
length滑块控件实例宽(水平方向)或 高(垂直方向),默认为100像素
orient滑块控件实例呈现方向,VERTCAL或HORIZONTAL(默认)
repeatdelay鼠标响应延时,默认为 300ms
resolution分辨精度,即最小值间隔
sliderlength滑块宽度,默认为30 像素
state状态,若设置 state=DISABLED,则滑块控件实例不可用
tickinterval标尺间隔,默认为0,若设置过小,则会重叠
to终止值(最大可取值)
variable返回数值, 类型可为IntVar(整数)、DoubleVar(浮点数)、或 StringVar(字符串)
width控件实例本身的宽度,默认为15像素

        滑块控件实例的主要方法比较简单,有 get()和set(值) ,滑块控件实例的主要方法比较简单,有 get()和set(值)。

        滑块实例也可绑定鼠标左键释放事件<ButtoonRelease-1>,并在执行函数中添加参数event来实现事件响应。注意是单括号‘<’,'>',不是双括号‘<<’,'>>'。

from tkinter import *

root=Tk()
root.geometry('500x300')
def getval(event):
        c=var.get()
        lb.configure(text=f'滑块的取值为{c}')
        return

if __name__=='__main__':
        root.title('滑块实验')
        var=DoubleVar()
        sc=Scale(root,orient=HORIZONTAL,length=200,from_=1.0,to=5.0,label='请拖动滑块',tickinterval=1,resolution=0.05,variable=var)
        sc.pack()
        lb=Label(root,text='滑块取值为1')
        lb.pack()
        sc.bind('<ButtonRelease-1>',getval)
        root.mainloop()

        (8)菜单(Menu)

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

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

相关文章

基于 vite 创建 Vue3 项目

1、基于 vue-cli 创建 ## 查看vue/cli版本&#xff0c;确保vue/cli版本在4.5.0以上 vue --version## 安装或者升级你的vue/cli npm install -g vue/cli## 执行创建命令 vue create vue_test## 随后选择3.x ## Choose a version of Vue.js that you want to start the proje…

通过IP地址防范钓鱼网站诈骗的有效措施

随着互联网的普及&#xff0c;钓鱼网站诈骗成为一种广泛存在的网络犯罪行为。通过冒充合法网站&#xff0c;攻击者试图窃取用户的敏感信息。本文将探讨如何通过IP地址防范钓鱼网站诈骗&#xff0c;提供一系列有效的措施&#xff0c;以加强网络安全&#xff0c;保护用户免受诈骗…

审计报告翻译服务,如何确保翻译质量?

近年来&#xff0c;随着跨国经济活动的增多&#xff0c;越来越多的企业需要进行跨国审计&#xff0c;而审计报告的翻译就变得尤为重要。那么&#xff0c;审计报告翻译服务&#xff0c;如何确保翻译质量&#xff1f;  据了解&#xff0c;审计报告翻译是全面揭示被审计单位实质情…

【Jenkins】centos服务器部署jenkins2.426

Jenkins部署 版本选择说明 目前项目上用的版本是比较旧的&#xff0c;现在用不了&#xff0c;插件版本问题比较恶心。试过2.346&#xff0c;插件问题没解决&#xff0c; 单独找&#xff08;*.hpi&#xff09;插件匹配的版本太麻烦了。 前置环境部署 git 略 JDK11 该jenk…

企业招聘信息发布平台

吉鹿力招聘网是中国有名的专业招聘网站&#xff0c;拥有超过1500万招聘信息&#xff0c;涵盖了全国各地的企业招聘信息&#xff0c;是求职者获取新招聘信息的良好渠道。百度搜索吉鹿力招聘网就能下载并投递简历&#xff0c;开启求职之旅。 吉鹿力招聘网企业注册流程 首先打开…

c语言:用指针输入两个数组|练习题

一、题目 利用指针&#xff0c;输入两个数组 如图&#xff1a; 二、代码截图【带注释】 三、源代码【带注释】 #include <stdio.h> int main() { int a[50]; int b[50]; int *paa,*pbb; //输入第一组数组 printf("请输入第一组5个数字&#xff1a;…

C++ 二进制图片的读取和blob插入mysql_stmt_init—新年第一课

关于二进制图片的读取和BLOB插入一共包含五步 第一步&#xff1a;初始化 MYSQL_STMT* stmt mysql_stmt_init(&mysql); 第二步&#xff1a;预处理sql语句 mysql_stmt_prepare(stmt,sql,sqllen); 第三步&#xff1a;绑定字段 mysql_stmt_bind_param(stmt,bind); 第四…

JVM虚拟机:各种JVM报错总结

错误 java.lang.StackOverflowError java.lang.OutOfMemoryError:java heap space java.lang.OutOfMemoryError:GC overhead limit exceeded java.lang.OutOfMemoryError:Direct buffer memory java.lang.OutOfMemoryError:unable to create new native thread java.lang.OutOf…

WPF容器的背景对鼠标事件的影响

背景&#xff1a;在实现鼠标拖动窗口的过程中发现对父容器设置了鼠标拖动窗口的事件MouseLeftButtonDown private void DragWindow(object sender, MouseButtonEventArgs e) {if (e.LeftButton MouseButtonState.Pressed)DragMove(); } 问题&#xff1a;非常困惑的是&#x…

python慕课版课后题答案,python慕课作业答案

这篇文章主要介绍了中国大学慕课python测验答案&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。 Flag 8月29日前学习完MOOC_Python课程&#xff0c;以下各测试题均来自于Python…

Rockchip平台Android应用预安装功能(基于Android13)

Rockchip平台Android应用预安装功能(基于Android13) 1. 预安装应用类型 Android上的应用预安装功能&#xff0c;主要是指配置产品时&#xff0c;根据厂商要求&#xff0c;将事先准备好的第三方应用预置进Android系统。预安装分为以下几种类型&#xff1a; 安装不可卸载应用安…

Axure医疗-住院板块,住院患者原型预览,新增医护人员原型预览,新增病房原型预览,选择床位原型预览,主治医生原型预览,主治医生医嘱原型预览

目录 一.医疗项目原型图-----住院板块 1.1 住院板块原型预览 1.2 新增住院患者原型预览 1.3 新增医护人员原型预览 1.4 新增病房原型预览 1.5 选择床位原型预览 1.6 主治医生原型预览 1.7 主治医生医嘱原型预览 1.8 主治医生查看患者报告原型预览 1.9 护士原型预…

008、所有权

所有权可以说是Rust中最为独特的一个功能了。正是所有权概念和相关工具的引入&#xff0c;Rust才能够在没有垃圾回收机制的前提下保障内存安全。 因此&#xff0c;正确地了解所有权概念及其在Rust中的实现方式&#xff0c;对于所有Rust开发者来讲都是十分重要的。在本文中&…

「Vue3面试系列」Vue3 所采用的 Composition Api 与 Vue2 使用的 Options Api 有什么不同?

文章目录 开始之前正文一、Options Api二、Composition Api三、对比逻辑组织Options APICompostion API 逻辑复用 小结 开始之前 Composition API 可以说是Vue3的最大特点&#xff0c;那么为什么要推出Composition Api&#xff0c;解决了什么问题&#xff1f; 通常使用Vue2开…

Model::unguard()的作用

这是在生成假数据时碰见的&#xff0c;浅查了一下 Model::unguard() 是 Laravel 框架中的一个方法&#xff0c;它的作用是取消对 Eloquent 模型的属性赋值的安全性保护。 在默认情况下&#xff0c;Laravel 的 Eloquent 模型会对属性赋值做一些安全性检查&#xff0c;例如防止…

Vue Cli inspect

Vue Cli inspect vue-cli-service inspect&#xff1a;可以使用 vue-cli-service inspect 来审查一个 Vue CLI 项目的 webpack config 使用方法&#xff1a; 1、输出在控制台&#xff1a;vue-cli-service inspect 2、输在在文件中&#xff1a;vue-cli-service inspect -->…

频谱论文:空间频率插值的无线电地图 Space-Frequency-Interpolated Radio Map

#频谱# K. Sato, K. Suto, K. Inage, K. Adachi and T. Fujii, "Space-Frequency-Interpolated Radio Map," in IEEE Transactions on Vehicular Technology, vol. 70, no. 1, pp. 714-725, Jan. 2021, doi: 10.1109/TVT.2021.3049894. 东京理科大学&#xff0…

Flink实时电商数仓(十)

common模块回顾 app BaseApp: 作为其他子模块中使用Flink - StreamAPI的父类&#xff0c;实现了StreamAPI中的通用逻辑&#xff0c;在其他子模块中只需编写关于数据处理的核心逻辑。BaseSQLApp: 作为其他子模块中使用Flink- SQLAPI的父类。在里面设置了使用SQL API的环境、并行…

桌面天气预报软件 Weather Widget free mac特点介绍

Weather Widget free for Mac多种吸引人的小部件设计可供选择&#xff0c;可以随时了解天气&#xff01;还可以在Dock和菜单栏中为您提供简短的天气预报或当前状况的概述。 Weather Widget free for Mac软件介绍 始终在桌面上使用时尚的天气小部件来随时了解天气&#xff01;多…

jenkins +jmeter 报告乱码解决

问题&#xff1a;生产报告会乱码的问题&#xff0c;一般是有编码格式引起的。我遇到的问题是&#xff0c;jmeter需要读取csv的数据作为参数。但是我们并不知道csv保存是什么编码格式&#xff0c;有可能不是utf-8的编码格式&#xff0c;所以会导致中文乱码的问题 解决方案&#…