当前位置: 首页 > 编程日记 > 正文

GUI编程之tkinter

链客,专为开发者而生,有问必答!

此文章来自区块链技术社区,未经允许拒绝转载。
在这里插入图片描述
0. 前言
本文内容为使用Python3的tkinter模块,开发GUI。在阅读本文前,请确保你已经或可能满足以下条件:

电脑中已经安装配置好Python3环境
了解Python3的基础语法,比如导入模块,基础语句,面向对象
学习GUI编程指南:

在这个GUI领域QT横行的年代,依旧有学习tkinter的价值。要学习GUI编程,你大概会经历这样一条路径:

认识tkinter模块,写一个简单GUI程序
认识各种控件、学习布局、使用容器
实战以检验动手能力和想象力
PS:你可能还需要了解一些消息驱动的知识
下面我们进入正式的学习。

  1. 认识Tkinter模块,写一个简单的GUI程序
    import tkinter as tk # 引入tkinter模块,并命名为tk
    win = tk.Tk() # 创建主窗口
    win.mainloop() # 进入消息循环,显示窗口界面
    要是用tkinter,首先引入该模块,为了方便命名为tk。

使用tk的一般套路是,先创建一个主窗口,也就是一个Tk()类, 进行一些列操作之后需,进入消息循环。

现在我们来做点简单的事:

import tkinter as tk # 引入tkinter模块,并命名为tk

win = tk.Tk() # 创建主窗口
win.title(“Hello”) # 标题
win.geometry(“400x400+400+200”) # 大小和位置
text = “Hello, Majesty!” # 要显示的内容
b = tk.Label(win, text=text).pack()

进入消息循环,显示窗口界面

win.mainloop()
你可以将上述代码保存在一个扩展名为pyw的的文件里,这样,这个程序可以双击启动,而且在启动时不会开始命令行(也就是不会弹出小黑框)。体验一下你就知道我在说什么了~

  1. 认识控件
    在上边的代码中我们使用了Label控件,Label控件是Tk最常用的组件之一,可以用来显示文本和图片等。在tkinter中,一共提供了15个控件,下面我们来认识一下它们。

控件名称

描述

Button

按钮控件;在程序中显示按钮。

Canvas

画布控件;在窗口中画图,如线条等元素

Checkbutton

多选框控件;用于在程序中提供多项选择框

Entry

输入控件;用于显示简单的文本内容

Frame

框架控件;在屏幕上定义一个区域,用来作为容纳其他控件的容器

Label

标签控件;可以显示文本和位图

Listbox

列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户

Menubutton

菜单按钮控件,由于显示菜单项。

Menu

菜单控件;显示菜单栏,下拉菜单和弹出菜单

Message

消息控件;用来显示多行文本,与label比较类似

Radiobutton

单选按钮控件;显示一个单选的按钮状态

Scale

滑动条控件;显示一个数值刻度,为输出限定范围的数字区间

Scrollbar

滚动条控件,当内容超过可视化区域时使用,如列表框。.

Text

文本控件;用于显示多行文本

Toplevel

容器控件;用来提供一个单独的对话框,和Frame比较类似

除此之外,你可能还需要了解一下上述控件都具有的共同属性,如下表:

标准属性也就是所有控件的共同属性,如大小,字体和颜色等等。

属性

描述

anchor

锚位:定位控件在窗口子内的位置。

background(bg)

背景颜色:用来定义控件的背景颜色

bitmap

位图:定义显示在控件中位图文件

borderwidth

边框宽度:定义控件的边框宽度

command

命令:指定特定的函数

cursor

光标:当鼠标指针经过控件时鼠标指针的类型

font

控件字体:用来定义控件上显示的字体,包括字体,大小,样式

foreground(fg)

前景颜色:定义控件的前景(字体)颜色

height

高度:定义控件的高度

image

图像:定义显示在控件内的图片文件

justify

对齐:定义多行文字标题的排列方式

padx

水平距离:定义控件内文字或图片与控件边框之间的水平距离。

pady

垂直距离:定义控件内文字或图片与控件边框之间的垂直距离。

relief

边框形式:定义控件的边框形式,比如2D或者3D

text

文字:定义控件的标题文字

variable

变量:将控件的数值映射到一个变量上。

width

宽度:定义控件的宽度

关于以上属性的注意点:

anchor:可以是N、S、E、W、NE、SW、SE、NW、CENTER,关于是什么意思,请去好好学学英语吧。
bg、fg:建议使用通用的“#rrggbb”,形式的数字,如,“#fffffff”。
cursor:是指针类型,可以是:crosshair、watch、xterm、fleur、arrow。
font:使用时,要赋予一个元组如 font=(“Times”, 8, ‘bold’),分别代表,字体,大小和样式,字体请查看,系统默认安装的字体,样式可以是bold、italic、underline、overstrike。
justify:可以是LEFT、CENTER、RIGHT。
relief:如果为2D,可以是FLAT、SOLID,如果是3D,可以是SUNKEN、RIDGE、RAISED。
了解了上述属性之后,你可能还需要了解一下tk的布局管理器tk提供了三种布局方式的布局管理器,分别是pack()、grid()、place()

布局方法

描述

pack()

包装:按照添加的顺序,自动分配到合适的位置上

grid()

网格:按照空间,(行/列)布局成一个表格的样子

place()

位置:允许自定义组件的大小和位置

现在让我们与这些控件与布局来一一过招吧。

  1. 按钮控件:Button
    Button()组件用来创建一个按钮,按钮内可以显示文字或者图片!

下面我们来使用Button():

from tkinter import Button
b = Button(win, text=“close”, command=win.quit).pack()

Button控件中有以下几种方法:

方法/属性

描述

flash()

将前景与背景颜色呼唤来产生闪烁效果

invoke()

执行command所定义的函数

activebackground

定义按钮在作用中的背景颜色

activeforeground

定义按钮在作用中的前景颜色

default

如果设置此属性,则此按钮为默认按钮

compound

文本和图像的混合模式

disableforeground

按钮不可用时的前景色

overrelief

鼠标飘过按钮时的鼠标样式

state

指定按钮的状态

takefocus

使用Tab改变按钮焦点,默认开启

underline

文字加下划线

下面看个demo:

Button(win, text=“0”, underline=0,command=win.quit).pack() # 下划线
Button(win, text=“1”,
activeforeground="#ff00ff",
activebackground="#00ff00",
state=“active”).pack() # 设置作用中的背景色与前景色,状态设置为作用中

对其他属性感兴趣的读者,可以自己尝试一下其他属性,限于篇幅小编在这里就不赘述了~

  1. 画布控件:Canvas
    画布控件,是可以在其上画图像的控件,可以在其上创建图像,如直线,矩形,椭圆等。

下列是Canvas控件中的方法:

Method/Attribute

Description

create_arc(coord, start, extent, fill)

创建弧形(扇形)coord定义左上角与右下角的坐标start是起始角度extent是结束角度(逆时针)fill是填充色

create_bitmap(x, y, bitmap)

创建一个位图

create_image(x, y, image)

创建一张图片image需要时PhotoImage或BitmapImage类的实例变量

create_line(x0, y0, … , xn,yn, options)

创建一条线,xn,yn是线上的点。

create_oval(x0, y0, x1,y1, options)

创建一个圆形或者椭圆

create_polygon(x0, y0, … , xn,yn, options)

穿件一个至少三个点的多边形

create_rectangle(x0, y0, … , xn,yn, options)

创建一个矩形

create_text(x0, y0, text, options)

创建一个字符串

下面来看一个demo:

from tkinter import Canvas as C
win = tk.Tk()
coord = 50,50,200,200
c = C(win)
c.create_arc(coord, start=0, extent = 120, fill=“red”)
c.pack()
win.mainloop()

接下来创建位图:

c = C(win)
c.create_bitmap(40,40, bitmap=“error”)
c.pack()

创建图片:

from tkinter import Canvas as C
from tkinter import PhotoImage
win = tk.Tk()
c = C(win)
img=PhotoImage(file=“image.png”)
c.create_image(100,100, image=img)
c.pack()
win.mainloop()

创建一条线:

from tkinter import Canvas as C
win = tk.Tk()
c = C(win)
c.create_line(40,40, 300,40, 90,120, width=2, fill="#ff00ff")
c.pack()
win.mainloop()

创建一个圆:

from tkinter import Canvas as C
win = tk.Tk()
c = C(win)
c.create_oval(50,50, 250,250,fill=‘green’, outline=“blue”)
c.pack()
win.mainloop()

创建多边形(如三角形):

from tkinter import Canvas as C
win = tk.Tk()
c = C(win)
c.create_polygon(10,10, 320,80, 150,150, outline=‘black’)
c.pack()
win.mainloop()

创建矩形:

from tkinter import Canvas as C
win = tk.Tk()
c = C(win)
c.create_rectangle(10,10, 220,220,outline=‘black’)
c.pack()
win.mainloop()

创建文本:

from tkinter import Canvas as C
win = tk.Tk()
c = C(win)
c.create_text(10,10,text=“Hello , 前面的demo亲手做一遍了么?” ,anchor=‘w’)
c.pack()
win.mainloop()

  1. 复选框控件:Checkbutton
    Checkbutton用来创建复选框。

from tkinter import Checkbutton
win = tk.Tk()
cb1 = Checkbutton(win, text=“篮球”).pack()
cb2 = Checkbutton(win, text=“足球”).pack()
cb3 = Checkbutton(win, text=“网球”).pack()
win.mainloop()

Checkbutton

Checkbutton的属性和方法如下:

Method/Attribute

Description

onvalue、offvalue

指定variable属性所指定的变量所要存储的数值。选中设置为onvalue未选中为offvalue

indicatoron

将此属性设置成零,可以将整个控件变成复选框

select()

将复选框的值变为onvalue

flash()

闪烁效果,同Button

invoke()

指定command,同Button

toggle()

改变核取状态的按钮

PS:上述方法,请在pack()之前使用。

  1. 输入控件:Entry
    Entry控件用来创建一个单行的文本框。

该控件内有以下属性/方法:

Method/Attribute

Description

show

为输入文字时显示在控件内的内容

get()

读取控件内的文字

下面看一个demo:

from tkinter import Label
from tkinter import Entry
from tkinter import Button
win = tk.Tk()
Label(win, text=“请输入密码:”).pack()
e = Entry(win, show=’’)
e.pack()
label = Label(win)
label.pack()
def do():
label.config(text=e.get())
button = Button(win, text=“OK”, command=do)
button.pack()
win.mainloop()
demo中使用了Label、Entry、Button三个控件,功能大概是这样,输入密码,会显示"
",按确定会在Label上显示输入内容。

  1. 标签控件:Label
    在前文已经数次用到了Label控件,它的作用类似于print()函数,它将文本打印在窗口体上。

在这里就不多说了。

from tkinter import *

root = Tk()

Label(root, text=“red”, bg=“red”, fg=“white”).pack(side=LEFT)
Label(root, text=“green”, bg=“green”, fg=“black”).pack(side=LEFT)
Label(root, text=“blue”, bg=“blue”, fg=“white”).pack(side=LEFT)

mainloop()
8. 列表框控件:Listbox
Listbox用来创建一个列表框,列表框内包含很多选项,用户可以选择一项或者多项。

from tkinter import Listbox
win = tk.Tk()
name = [‘蹦床’,“射箭”,“攀岩”]
listbox = Listbox(win)
for i in name:
listbox.insert(‘end’, i)
listbox.pack()
win.mainloop()

Listbox控件中提供了下列方法/属性(仅列举常用的几个):

Method/Attribute

Description

activate(index)

将给定索引号对应的选项激活(在其文本下方画一条下划线)

delete(first, last=None)

删除参数 first 到 last 范围内的所有选项

get(first, last=None)

返回包含参数 first 到 last 范围内的所有选项的文本的元组

index(index)

返回参数index选项的序号

insert(index, *elements)

添加一个或多个项目到 Listbox 中

size()

返回 Listbox 组件中选项的数量

‘end’

表示列表末尾

  1. 菜单控件:Menu
    可以用来创建三种菜单,即主菜单、 下拉菜单、快捷式菜单。

主菜单

from tkinter import Menu

def doSth():
pass

win = tk.Tk()
win.title(“Menu”)
win.geometry(“400x400”)
mainmenu = Menu(win)
mainmenu.add_command(label=“file”, command=doSth)
mainmenu.add_command(label=“edit”, command=doSth)
mainmenu.add_command(label=“view”, command=doSth)
mainmenu.add_command(label=“window”, command=doSth)
mainmenu.add_command(label=“tool”, command=doSth)
mainmenu.add_command(label=“help”, command=doSth)
win.config(menu=mainmenu)
win.mainloop()

下拉菜单

import tkinter as tk

from tkinter import Menu

def doSth():
pass

win = tk.Tk()
win.title(“Menu”)
win.geometry(“400x300”)
mainmenu = Menu(win)
filemenu = Menu(mainmenu, tearoff=0)
filemenu.add_command(label=‘New’, command=doSth)
filemenu.add_command(label=‘Save’, command=doSth)
filemenu.add_separator()
filemenu.add_command(label=‘Quit’, command=doSth)
mainmenu.add_cascade(label=“file”, menu=filemenu)

mainmenu.add_command(label=“edit”, command=doSth)
mainmenu.add_command(label=“view”, command=doSth)
mainmenu.add_command(label=“window”, command=doSth)
mainmenu.add_command(label=“tool”, command=doSth)
mainmenu.add_command(label=“help”, command=doSth)

win.config(menu=mainmenu)

win.mainloop()

快捷菜单

win = tk.Tk()
win.title(“Menu”)
win.geometry(“400x200”)

mainmenu = Menu(win)
pmenu = Menu(win, tearoff=0)
def showpmenu(event):
pmenu.post(event.x_root, event.y_root)

win.bind("", showpmenu)
win.mainloop()

  1. 消息控件:Message
    与Label类似,是用来显示文字的空间,但Message控件用来显示多行不可编辑的文字,且它可以自动编排文字的位置。

import tkinter as tk
from tkinter import Message
win = tk.Tk()
txt = “这是一个长长的字符串,这是一个长长的字符串,这是一个长长的字符串,这是一个长长的字符串,这是一个长长的字符串。”

Message(win,text=txt).pack()
win.mainloop()

  1. 单选按钮:Radiobutton
    与Checkbutton类似,只不过Checkbutton是可以单选,也可以多选,而Radiobutton是单选。

import tkinter as tk
from tkinter import Radiobutton

win = tk.Tk()
sex=[‘男’,‘女’]
Radiobutton(win, text=sex[0],value=0).pack(anchor=‘w’)
Radiobutton(win, text=sex[1],value=1).pack(anchor=‘w’)

win.mainloop()

  1. 滑动条控件:Scale
    Scale控件可以创建一个游标尺一样的滑动条。

from tkinter import Scale
win = tk.Tk()
Scale(win, from_=0, to=10).pack()
win.mainloop()

  1. 滚动条控件:Scrollbar
    import tkinter as tk

from tkinter import Scrollbar
from tkinter import Listbox
win = tk.Tk()

sb1 = Scrollbar(win)
sb2 = Scrollbar(win, orient=‘horizontal’)
sb1.pack(side=‘right’, fill=‘y’)
sb2.pack(side=‘bottom’, fill=‘x’)

lb = Listbox(win, yscrollcommand=sb1.set, xscrollcommand=sb2.set)

for i in range(1000):
lb.insert(‘end’, str(i)*100)

lb.pack(side=‘left’, fill=‘both’)

sb1.config(command=lb.yview)
sb2.config(command=lb.xview)

win.mainloop()

  1. 文本框控件:Text
    Text控件用来创建一个文本框,文本框的内容可以是多行,格式化的,用户可以修改文本框中的内容。经常别用作文本浏览器或者网页浏览器。

from tkinter import Text
win = tk.Tk()
Text(win, width=100, height=30).pack()
win.mainloop()

  1. 菜单按钮控件:Menubutton
    from tkinter import *

win = Tk()

def doSth():
pass

mb = Menubutton(win, text=“点我”, relief=RAISED)
mb.pack()

filemenu = Menu(mb, tearoff=False)
filemenu.add_command(label=“打开”, command=doSth)
filemenu.add_command(label=“保存”, command=doSth)
filemenu.add_separator()
filemenu.add_command(label=“退出”, command=win.quit)

mb.config(menu=filemenu)

mainloop()

  1. 框架控件:Frame
    Frame控件是在屏幕上的一个矩形区域。其主要作用是作为其他组件的框架基础,或为其他组件提供间距填充。

from tkinter import *

Label(text=“标签1”).pack()

separator = Frame(height=12, bd=1, relief=SUNKEN)
separator.pack(fill=X, padx=5, pady=5)

Label(text=“标签2”).pack()

mainloop()

其他控件也可以附着在Frame上。

Label(text=“标签1”).pack()
f = Frame(height=12, bd=12,relief=‘sunken’)
Label(f, text=“标签2”).pack()
f.pack(padx=5, pady=5)
mainloop()

  1. 独立窗口控件:Toplevel
    from tkinter import *

root = Tk()

def create_toplevel():
top = Toplevel()
top.title(“Toplevel”)

msg = Message(top, text="Here is a window of toplevel!")
msg.pack()

Button(root, text=“创建独立窗口”, command=create_toplevel).pack()

mainloop()

相关文章:

js插件 webp_(转)让浏览器支持Webp

转载自:https://segmentfault.com/a/1190000005898538?utm_sourcetuicool&utm_mediumreferral转换工具判断浏览器支持webP方法一:functioncheckWebp() {try{return (document.createElement(canvas).toDataURL(image/webp).indexOf(data:image/webp…

一些大佬博客里的个签

觉得很励志~遇到了就复制下来激励自己。 1.宜静默,宜从容,宜谨严,宜俭约。 //读了两遍感觉心都静下来了。 2.别打扰我,我还能写一套程序。 3.时间并不会因为你的迷茫和迟疑而停留,就在你看这篇文章的同时&#xff0c…

以太坊搭建私有链

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 1.关于私有链 在以太坊上部署智能合约、发起交易需要花费以太币。而私链和公有链没有关系,不用同步大量的数据,也不用花钱购…

C++回溯法走迷宫

1 #include <iostream> 2 #include <iomanip> 3 #include <cstdlib> 4 using namespace std;5 6 #define MaxSize 100 7 int maze[10][10] //定义一个迷宫&#xff0c;0表示通道&#xff0c;1表示墙 8 {9 { 1,1,1,1,1,1,1,1,1,1 },10 { 1,0,…

js放大镜特效

原理分析&#xff1a;当鼠标在小图片上移动时&#xff0c;通过捕捉鼠标在小图片上的位置&#xff0c;定位大图片的相应位置。&#xff08;同时&#xff0c;当鼠标在小图片上移动时&#xff0c;右侧大图片往相反的方向移动。&#xff09; 放大镜特效设计&#xff1a; ①页面元素…

5页面返回上个页面定位_5个步骤,画好页面流程图

对于任何产品设计来说&#xff0c;构建流程都是一个绕不开的环节。其奠定了后续的产品框架&#xff0c;是用户体验的基石。本文将从定义和方法出发&#xff0c;结合实际案例&#xff0c;深入浅出地阐述流程图的作用以及画法。最近在做一个关于阅读笔记的原型&#xff0c;业务流…

EOS智能合约:system系统合约源码分析

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 eosio.system 概览 笔者使用的IDE是VScode&#xff0c;首先来看eosio.system的源码结构。如下图所示。 本文分析的源码来自于eosio.contracts。 …

文字超过省略_从楚篆到楚玺的文字结构

从古文字研究的角度来说&#xff0c;楚玺文字也是楚文字系统中重要的组成部分。古文字发展演变的一般规律&#xff0c;如简化、繁化、异化、分化、类化等在印章上也有反映。在楚系简帛书没有大量出土发现和研究出版前&#xff0c;楚玺研究的文字参照物不多&#xff0c;主要是依…

caffe prototxt分析

测试用prototxt name: "CIFAR10_quick"layer {name: "data" type: "MemoryData" top: "data" top: "label" memory_data_param {batch_size: 1 #样本个数 channels: 3 height: 32 width: 32 }}layer {name: "conv1…

Mysql与Oracle区别

Mysql与Oracle区别 文章分类:数据库 周五去一家公司去面试&#xff0c;那公司经理问了关于Mysql与Oracle的区别问题&#xff0c;以前没有总结&#xff0c;回答也不是很好&#xff0c;只是凭感觉&#xff0c;先总结如下&#xff1a; 1. Oracle是大型数据库而Mysql是中小型数据库…

区块链 + 大数据:EOS存储

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 谈到区块链的存储&#xff0c;我们很容易联想到它的链式存储结构&#xff0c;然而区块链从比特币发展到今日当红的EOS&#xff0c;技术形态已经演化…

全网最全的Windows下Anaconda2 / Anaconda3里Python语言实现定时发送微信消息给好友或群里(图文详解)...

不多说&#xff0c;直接上干货&#xff01; 缘由&#xff1a; &#xff08;1&#xff09;最近看到情侣零点送祝福&#xff0c;感觉还是很浪漫的事情&#xff0c;相信有很多人熬夜为了给爱的人送上零点祝福&#xff0c;但是有时等着等着就睡着了或者时间并不是卡的那么准就有点强…

Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo

更新了xcode后使用goland运行项目时提示 Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo 更具提示打开xcode 点击agree安装即可&#xff01; 转载于:https://www.cnblogs.com/mafeng/p/6196494.html

arc diff 指定版本号_Phabricator客户端安装

前提需要配置好服务器端客户端安装mac环境下&#xff0c;指定一个目录$ mkdir somewhere/$ cd somewhere/somewhere/ $ git clone https://github.com/phacility/libphutil.gitsomewhere/ $ git clone https://github.com/phacility/arcanist.git配置环境变量&#xff0c;在.ba…

EOSIO 转帐详解

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 EOS和EOS的不同之处 在EOS网络中存在两种货币&#xff0c;一种是EOS&#xff0c;还有一种是EOS网络中的代币。说到这里大家似乎有点疑惑&#xff0…

各种函数调用约定及浮点数传参

32位下_stdcall, _fastcall, _cdecl #include <windows.h>int _stdcall Func1(int a, int b, int c, int d) {return abcd; } int _fastcall Func2(int a, int b, int c, int d) {return abcd; } int _cdecl Func3(int a, int b, int c, int d) {return a b c d; }…

cookie、session总结

前几天在调试第三方支付接口时碰到一个session失效问题&#xff0c;用了几天时间才搞明白&#xff0c;现在回想一下&#xff0c;主要还是由于cookie和session这一块的一些基本概念没有搞清楚&#xff0c;现总结一下。 浏览器使用HTTP协议作为应用层协议&#xff0c;而HTTP协议是…

glibc降级后怎么恢复 linux_Linux(CentOS)GLIBC出错补救方式

出于各种原因&#xff0c;我玩坏了我的系统.........主要出错原因是更改 /usr/lib64 下的 libc.so.6 等文件引起&#xff0c;具体错误及补救方式附上&#xff0c;希望可以帮到心里失火后来人&#xff1a;首先&#xff0c;不要随便重新启动&#xff01;&#xff01;&#xff01;…

将Eclipse代码导入到AndroidStudio的两种方式

实现步骤 1. 从Eclipse中导出Gradle build files 在Eclipse菜单中 File --> Export-->Generate Gradle build files接下来会到达警告界面&#xff0c;这里会提示AndroidStudio可以直接导入ADT的工程&#xff0c;先过&#xff0c;后面有直接导入的讲解。选中你的项目工程&…

微软浏览器适配问题前端_「图」微软新贡献:修复Chromium浏览器的奇怪触控板手势问题...

去年微软宣布计划成为Chromium项目的重要贡献者之一&#xff0c;希望为包括Edge和Chrome在内所有基于Chromium的浏览器带来更多改进和功能。在增强鼠标滚动和搜索功能之外&#xff0c;微软现在将部分精力放在部分Windows 10设备(例如Surface Pro系列和Surface Book系列)上奇怪的…

ruby gems列表

1 https://github.com/shageman/cobradeps 转载于:https://www.cnblogs.com/or2-/p/9268352.html

简明区块链原理

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 “区块链”应有特质&#xff1a; 使用了具有 “哈希链” (下文有解释) 形式的数据结构保存基础数据 有多个结点参与系统运行&#xff08;分布式…

Bash shell

一、认识bash shell 1、登录取得的shell就记录在/etc/passwd这个文件内 可以使用cat /etc/passwd查看 2、bash shell 功能 a. 命令记忆能力&#xff08;history&#xff09;&#xff0c;默认1000个&#xff0c;存在~/.bash_history文件 b. 命令与文件补全功能&#xff08;Tab键…

快过高铁!构建云分布式应用还能这样操作?!

先跟跟大家说一个中国历史上杰出的军事家、政治家&#xff0c;长长的胡子&#xff0c;红的发黑的脸&#xff0c;骑着一匹红色的马。没错&#xff01;他就是三国跑的最快的男人——曹操&#xff08;说曹操曹操到&#xff09;&#xff01; 不说笑了。 关羽&#xff0c;字云长&…

基于安卓的考试系统_基于安卓11定制!华为最新手机系统曝光:体验堪比苹果iOS!...

在最近的一场发布会上&#xff0c;华为正式宣布了自家的HMS和AppGallery服务&#xff0c;对标安卓Play商店和苹果Appstore商店&#xff0c;这一举措让华为再度登上风口浪尖。这种做法在业界人士眼里的目的只有一个&#xff0c;华为要脱离安卓系统自立门户&#xff0c;从建立第三…

区块链前世今生

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 比特币的起源 2008年&#xff0c;一位化名为中本聪的人&#xff0c;在一篇为《比特币&#xff1a;一个点对点的电子现金系统》的论文中首先提出了比…

前端知识之HTML内容

参考:http://www.cnblogs.com/liwenzhou/p/7988087.html HTML介绍 Web服务本质 import socketsk socket.socket()sk.bind(("127.0.0.1", 8080)) sk.listen(5)while True:conn, addr sk.accept()data conn.recv(8096)conn.send(b"HTTP/1.1 200 OK\r\n\r\n&qu…

征途linux mysql_MySql征途之mysql常用命令

mysql征程之mysql常用命令一、连接MySql语法&#xff1a; mysql -h 主机地址 -u 用户名 &#xff0d;p 用户密码例1&#xff1a;连接到本机上的MYSQL。键入命令mysql -u root -p(本地连接 主机地址可以不写)&#xff0c;回车后提示你输入密码&#xff0c;输入正确之后&#xff…

区块链+物联网=?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 区块链与物联网(IoT)的交叉应用已成为最有前途的区块链用例之一。在过去的几个月里&#xff0c;IoTeX一直与我们的战略合作伙伴合作&#xff0c;并…

mysql 中文截取_mysql 截取中文字符

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航&#xff0c;为用户…