自制python 終端畫布模塊


python在終端繪制一個畫布:consoleCanvas

效果如圖 :

 

已發布到pypi

https://pypi.org/project/ConsoleCanvas/

 

Project description

ConsoleCanvas用法:

0.安裝

pip install ConsoleCanvas -i https://pypi.python.org/simple

 

0.1.終端顯示cv2的img:

import consoleCanvas,cv2
img=cv2.imread("C:\\Users\\Administrator\\Desktop\\1.png")
consoleCanvas.cvShow(img)

1.先初始化對象:

import consoleCanvas
A=consoleCanvas.consoleCanvas()

 

2.生成畫布:

A.ProduceCanvas(80,80)#創建畫布

 

3.繪制像素點:

A.reviseCanvas([x,y],1)
#[x,y]是坐標,1是代表繪制黑色點,0是繪制白色點

 

4.顯示畫布:

A.show() #顯示畫布

 

5.清空畫布:

A.ProduceCanvas(80,80)#也就是重新創建畫布

 

6.例子

#繪制圓形
import consoleCanvas
a=10
b=10
r=10
A=consoleCanvas.consoleCanvas()#初始化
A.ProduceCanvas(21,21)#創建畫布
A.reviseCanvas([0,0],1)
for x in range(a-r,a+r):
    y=int((((r**2)-(x-a)**2)**(1/2))+b)
    A.reviseCanvas([x,y],1)#繪制畫布像素
for x in range(a+r,a-r,-1):
    y=int(-1*(((r**2)-(x-a)**2)**(1/2))+b)
    A.reviseCanvas([x,y],1)#繪制畫布像素
A.show() #顯示畫布

 

輸出:

⠁⠀⠔⠀⠀⠁⠀⠂⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠠⠃⠀⠀⠀⠀⠀⠀⠈⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠇⠀⠀⠀⠀⠀⠀⠀⠀⠸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠇⠀⠀⠀⠀⠀⠀⠀⠀⠨⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠇⠀⠀⠀⠀⠀⠀⠀⠀⠸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠈⠆⠀⠀⠀⠀⠀⠀⠠⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠑⠀⠀⠄⠀⠂⠁⠀

 

用法:

1.先初始化對象:

A=consoleCanvas()

2.生成畫布:

A.ProduceCanvas(80,80)#創建畫布

3.繪制像素點:

A.reviseCanvas([x,y],1)
#[x,y]是坐標,1是代表繪制黑色點,0是繪制白色點

4.顯示畫布:

A.show() #顯示畫布

5.清空畫布:

A.ProduceCanvas(80,80)#也就是重新創建畫布

 

 

Python示例代碼:

class consoleCanvas:
    def __init__(self):
        #這些字符是盲文字符
        self.li=["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
            "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
            "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
            "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",

            "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
            "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
            "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
            "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",

            "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
            "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
            "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
            "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",

            "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
            "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
            "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
            "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]
    def ProduceCanvas(self,Width, height):
        self.map_c=[[0 for i in range(80)]  for i in range(80)]
        return self.map_c

    def reviseCanvas(self,position, data):
        self.map_c[position[0]][position[1]]=data
        return self

    def getnum(self,data):
        #匹配字符索引
        q=[
        [1,8],
        [2,16],
        [4,32],
        [64,128],]
        num=0
        for w in range(len(data)):
            for h in range(len(data[w])):
                if (data[w][h]==1):
                    num+=q[w][h]
        return num


    def show(self,map_c=""):
        if map_c=="":
            map_c=self.map_c
        list_data=[]
        for wi in range((len(map_c)%3)+(len(map_c)%3)):#補齊行數不足寬度
            map_c.append([0 for i in range(len(map_c[0]))])

        for hi in map_c:##補齊列數不足寬度
            for n in range((len(map_c)%3)+(len(map_c)%3)):
                hi.append(0)

        for w in range(0,len(map_c),3): #切片地圖,變換地圖
            lis=[]
            for i in range(0,len(map_c[w]),2):
                lis.append([map_c[w][i:i+2],map_c[w+1][i:i+2],map_c[w+2][i:i+2]])
                
            list_data.append(lis)

        for  i in list_data: #顯示地圖
            for x in i:
                num=self.getnum(x)
                print(self.li[num],end="")
            print()

if __name__ == "__main__":
    
    
    A=consoleCanvas()#初始化
    A.ProduceCanvas(80,80)#創建畫布

    a=50
    b=50
    r=20
    
    for x in range(a-r,a+r):
        y=int((((r**2)-(x-a)**2)**(1/2))+b)
        A.reviseCanvas([x,y],1)#繪制畫布像素
    for x in range(a+r,a-r,-1):
        y=int(-1*(((r**2)-(x-a)**2)**(1/2))+b)
        A.reviseCanvas([x,y],1)#繪制畫布像素

    A.show() #顯示畫布

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM