亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python使用tkinter模塊實現(xiàn)推箱子游戲

 更新時間:2019年10月08日 09:45:38   作者:ZackSock  
這篇文章主要介紹了Python使用tkinter模塊實現(xiàn)推箱子游戲,主要分享兩點,第一就是這個程序的實現(xiàn)過程,第二點就是我在編寫過程中的一些思考。本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友參看下吧

前段時間用C語言做了個字符版的推箱子,著實是比較簡陋。正好最近用到了Python,然后想著用Python做一個圖形界面的推箱子。這回可沒有C那么簡單,首先Python的圖形界面我是沒怎么用過,在網(wǎng)上找了一大堆教材,最后選擇了tkinter,沒什么特別的原因,只是因為網(wǎng)上說的多。

接下來就來和大家分享一下,主要分享兩點,第一就是這個程序的實現(xiàn)過程,第二點就是我在編寫過程中的一些思考。

一、介紹

開發(fā)語言:Python 3.7
開發(fā)工具:PyCharm 2019.2.4
日期:2019年10月2日
作者:ZackSock

這次的推箱子不同與C語言版的,首先是使用了圖形界面,然后添加了背景音樂,還有就是可以應(yīng)對多種不同的地圖。我內(nèi)置了三張地圖,效果圖如下:


在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

比上次的高級多了,哈哈。

二、開發(fā)環(huán)境

我也不知道這么取名對不對,這里主要講的就是使用到的模塊。因為Python不是我的強(qiáng)項,所以我只能簡單說一下。

首先我使用的是Python3.7,主要用了兩個模塊,tkinterpygame。其中主要使用的還是tkinter,而pygame是用來播放音樂的。(因為沒去了解pygame,所有界面我是用tkinter寫的)。

庫的導(dǎo)入我使用的是pycharm,導(dǎo)入非常方便。如果使用其它軟件可以考慮用pip安裝模塊,具體操作見下文:http://chabaoo.cn/article/171391.htm。

pip install tkinter
pip install pygame

三、原理分析

1、地圖

地圖在思想方面沒有太大改變,還是和以前一樣使用二維數(shù)組表示。不過我認(rèn)為這樣確實不是非常高效的做法,不過這個想法也是在我寫完之后才有的

2、移動

在移動方面我修改了很多遍,先是完全按照原先的算法。這個確實也實現(xiàn)了,不過只能在第一關(guān)有效,在我修改地圖之后發(fā)現(xiàn)了一系列問題,然后根據(jù)問題發(fā)現(xiàn)實際遇到的情況要復(fù)雜很多。因為Python是用強(qiáng)制縮進(jìn)替代了{(lán)},所以代碼在觀看中會有些難度,希望大家見諒。

移動的思想大致如下:

/**
*	0表示空白
*	1表示墻
*	2表示人
*	3表示箱子
*	4表示終點
*	5表示已完成的箱子
*	6表示在終點上的人
*/
一、人
	1、移動方向為空白
		前方設(shè)置為2
		當(dāng)前位置為0
	2、移動方向為墻
		直接return
	3、移動方向為終點	
		前面設(shè)置為6
		當(dāng)前位置設(shè)置為0
	4、移動方向為已完成的箱子
		4.1、已完成箱子前面是箱子
			return
		4.2、已完成箱子前面是已完成的箱子
			return
		4.3、已完成箱子前面是墻
			return
		4.4、已完成箱子前面為空白
			已完成箱子前面設(shè)置3
			前方位置設(shè)置為6
			當(dāng)前位置設(shè)置為0
		4.5、已完成箱子前面為終點
			已完成箱子前面設(shè)置為5
			前方位置設(shè)置為6
			當(dāng)前位置設(shè)置為0
	5、前方為箱子
		5.1、箱子前方為空白
			箱子前方位置設(shè)置為3
			前方位置設(shè)置為2
			當(dāng)前位置設(shè)置為0
		5.2、箱子前方為墻
			return
		5.3、箱子前方為箱子
			return
		5.4、箱子前方為已完成的箱子
			return
		5.5、箱子前方為終點
			箱子前方位置設(shè)置為5
			前方位置設(shè)置為2
			當(dāng)前位置設(shè)置為0
二、在終點上的人
	1、移動方向為空白
		前方設(shè)置為2
		當(dāng)前位置設(shè)置為4
	2、移動方向為墻
		直接return
	3、移動方向為終點
		前面設(shè)置為6
		當(dāng)前位置設(shè)置為4
	4、移動方向為已完成的箱子
		4.1、已完成箱子前面是箱子
			return
		4.2、已完成箱子前面是已完成的箱子
			return
		4.3、已完成箱子前面是墻
			return
		4.4、已完成箱子前面為空白
			已完成箱子前面設(shè)置3
			前方位置設(shè)置為6
			當(dāng)前位置設(shè)置為4
		4.5、已完成箱子前面為終點
			已完成箱子前面設(shè)置為5
			前方位置設(shè)置為6
			當(dāng)前位置設(shè)置為4
	5、前方為箱子
		5.1、箱子前方為空白
			箱子前方位置設(shè)置為3
			前方位置設(shè)置為2
			當(dāng)前位置設(shè)置為4
		5.2、箱子前方為墻
			return
		5.3、箱子前方為箱子
			return
		5.4、箱子前方為已完成的箱子
			return
		5.5、箱子前方為終點
			箱子前方位置設(shè)置為5
			前方位置設(shè)置為2
			當(dāng)前位置設(shè)置為4

首先,人有兩種狀態(tài),人可以站在空白處,也可以站在終點處。后面我發(fā)現(xiàn),人在空白處和人在終點唯一的區(qū)別是,人移動后,人原先的位置一個設(shè)置為0,即空白,一個設(shè)置為4,即終點。所以我在移動前判斷人背后的東西,就可以省去一般的代碼了。上面的邏輯可以改為如下:

/**
*	0表示空白
*	1表示墻
*	2表示人
*	3表示箱子
*	4表示終點
*	5表示已完成的箱子
*	6表示在終點上的人
*/
if(當(dāng)前位置為2):
	#即人在空白處
	back = 0
elif(當(dāng)前位置為6):
	#即人在終點處
	back = 4

1、移動方向為空白	(可移動)
	前方設(shè)置為2
	當(dāng)前位置為back
2、移動方向為墻
	直接return
3、移動方向為終點	(可移動)
	前面設(shè)置為6
	當(dāng)前位置設(shè)置為back
4、移動方向為已完成的箱子
	4.1、已完成箱子前面是箱子
		return
	4.2、已完成箱子前面是已完成的箱子
		return
	4.3、已完成箱子前面是墻
		return
	4.4、已完成箱子前面為空白	(可移動)
		已完成箱子前面設(shè)置3
		前方位置設(shè)置為6
		當(dāng)前位置設(shè)置為back
	4.5、已完成箱子前面為終點	(可移動)
		已完成箱子前面設(shè)置為5
		前方位置設(shè)置為6
		當(dāng)前位置設(shè)置為back
5、前方為箱子
	5.1、箱子前方為空白	(可移動)
		箱子前方位置設(shè)置為3
		前方位置設(shè)置為2
		當(dāng)前位置設(shè)置為back
	5.2、箱子前方為墻
		return
	5.3、箱子前方為箱子
		return
	5.4、箱子前方為已完成的箱子
		return
	5.5、箱子前方為終點	(可移動)
		箱子前方位置設(shè)置為5
		前方位置設(shè)置為2
		當(dāng)前位置設(shè)置為back

四、文件分析

在這里插入圖片描述

目錄結(jié)構(gòu)如下,主要有三個文件BoxGame、initGame和Painter。test文件的話就是測試用的,沒有實際用處。然后講一下各個文件的功能:

  1. BoxGame:作為游戲的主入口,游戲的主要流程就在里面。老實說我Python學(xué)習(xí)的內(nèi)容比較少,對Python的面向?qū)ο蟛皇呛苁煜?,所有這個流程更偏向于面向過程的思想。
  2. initGame:初始化或存儲一些數(shù)據(jù),如地圖數(shù)據(jù),人的位置,地圖的大小,關(guān)卡等
  3. Painter:我在該文件里定義了一個Painter對象,主要就是用來繪制地圖

除此之外就是圖片資源和音樂資源了。

五、代碼分析

1、BoxGame

from tkinter import *
from initGame import *
from Painter import Painter
from pygame import mixer

#創(chuàng)建界面并設(shè)置屬性
#創(chuàng)建一個窗口
root = Tk()	
#設(shè)置窗口標(biāo)題
root.title("推箱子")
#設(shè)置窗口大小,當(dāng)括號中為"widhtxheight"形式時,會判斷為設(shè)置寬高這里注意“x”是重要標(biāo)識
root.geometry(str(width*step) + "x" + str(height*step))
#設(shè)置邊距, 當(dāng)括號中為"+left+top"形式,會判斷為設(shè)置邊距
root.geometry("+400+200")
#這句話的意思是width可以改變0,height可以改變0,禁止改變也可以寫成resizable(False, False)
root.resizable(0, 0)

#播放背景音樂
mixer.init()
mixer.music.load('bgm.mp3')	#加載音樂
mixer.music.play()		#播放音樂,歌曲播放完會自動停止

#創(chuàng)建一個白色的畫板,參數(shù)分別是:父窗口、背景、高、寬
cv = Canvas(root, bg='white', height=height*step, width=width*step)

#繪制地圖
painter = Painter(cv, map, step)
painter.drawMap()

#關(guān)聯(lián)Canvas
cv.pack()

#定義監(jiān)聽方法
def move(event):
	pass
	
#綁定監(jiān)聽事件,鍵盤事件第一個參數(shù)固定為"<Key>",第二個參數(shù)為方法名(不能加括號)	
root.bind("<Key>", move)
#進(jìn)入循環(huán)
root.mainloop()

因為move的代碼比較長,就先不寫出來,后面講解。BoxGame主要流程如下:

  1. 導(dǎo)入模塊
  2. 創(chuàng)建窗口并設(shè)置屬性
  3. 播放背景音樂
  4. 創(chuàng)建畫板
  5. 在畫板上繪制地圖
  6. 將畫板鋪到窗口上
  7. 讓窗口關(guān)聯(lián)監(jiān)聽事件
  8. 游戲循環(huán)了

2、initGame

#游戲需要的一些參數(shù)
mission = 0
mapList = [
 [
 [0, 0, 1, 1, 1, 0, 0, 0],
 [0, 0, 1, 4, 1, 0, 0, 0],
 [0, 0, 1, 0, 1, 1, 1, 1],
 [1, 1, 1, 3, 0, 3, 4, 1],
 [1, 4, 0, 3, 2, 1, 1, 1],
 [1, 1, 1, 1, 3, 1, 0, 0],
 [0, 0, 0, 1, 4, 1, 0, 0],
 [0, 0, 0, 1, 1, 1, 0, 0]
 ],
 [
 [0, 0, 0, 1, 1, 1, 1, 1, 1, 0],
 [0, 1, 1, 1, 0, 0, 0, 0, 1, 0],
 [1, 1, 4, 0, 3, 1, 1, 0, 1, 1],
 [1, 4, 4, 3, 0, 3, 0, 0, 2, 1],
 [1, 4, 4, 0, 3, 0, 3, 0, 1, 1],
 [1, 1, 1, 1, 1, 1, 0, 0, 1, 0],
 [0, 0, 0, 0, 0, 1, 1, 1, 1, 0]
 ],
 [
 [0, 0, 1, 1, 1, 1, 0, 0],
 [0, 0, 1, 4, 4, 1, 0, 0],
 [0, 1, 1, 0, 4, 1, 1, 0],
 [0, 1, 0, 0, 3, 4, 1, 0],
 [1, 1, 0, 3, 0, 0, 1, 1],
 [1, 0, 0, 1, 3, 3, 0, 1],
 [1, 0, 0, 2, 0, 0, 0, 1],
 [1, 1, 1, 1, 1, 1, 1, 1]
 ],
 [
 [1, 1, 1, 1, 1, 1, 1, 1],
 [1, 0, 0, 1, 0, 0, 0, 1],
 [1, 0, 3, 4, 4, 3, 0, 1],
 [1, 2, 3, 4, 5, 0, 1, 1],
 [1, 0, 3, 4, 4, 3, 0, 1],
 [1, 0, 0, 1, 0, 0, 0, 1],
 [1, 1, 1, 1, 1, 1, 1, 1]
 ]
]
map = mapList[3]

#人背后的東西
back = 0
#地圖的寬高
width, height = 0, 0
#地圖中箱子的個數(shù)
boxs = 0
#地圖中人的坐標(biāo)
x = 0
y = 0
#畫面大小
step = 30

def start():
 global width, height, boxs, x, y, map
 # 做循環(huán)變量
 m, n = 0, 0
 for i in map:
 for j in i:
 # 獲取寬,每次內(nèi)循環(huán)的次數(shù)都是一樣的,只需要第一次記錄width就可以了
 if (n == 0):
 width += 1
 #遍歷到箱子時箱子數(shù)量+1
 if (j == 3):
 boxs += 1
 #當(dāng)為2或者6時,為遍歷到人
 if (j == 2 or j == 6):
 x, y = m, n
 m += 1
 m = 0
 n += 1
 height = n
start()

因為我還沒有實現(xiàn)關(guān)卡切換,所以這里的mapList和mission沒有太大用處,主要參數(shù)有一下幾個:

back:人背后的東西(前面分析過了)width、height:寬高boxs:箱子的個數(shù)x、y:人的坐標(biāo)step:每個正方形格子的邊長,因為我對Canvas繪制圖片不熟悉,所以固定圖片為30px

因為initGame中沒有定義類,所以在引用時就相當(dāng)于執(zhí)行了其中的代碼。

3、Painter

from tkinter import PhotoImage, NW

#在用Canvas繪制圖片時,圖片必須是全局變量
img = []
class Painter():
 def __init__(self, cv, map, step):
 	"""Painter的構(gòu)造函數(shù),在cv畫板上,根據(jù)map畫出大小為step的地圖"""
 	#傳入要拿來畫的畫板
 self.cv = cv
 #傳入地圖數(shù)據(jù)
 self.map = map
 #傳入地圖大小
 self.step = step
 def drawMap(self):
 """用來根據(jù)map列表繪制地圖"""
 #img列表的長度
 imgLen = 0
 global img
 #循環(huán)變量
 x, y = 0, 0
 for i in self.map:
 for j in list(i):
 	#記錄實際位置
 lx = x * self.step
 ly = y * self.step

 # 畫空白處
 if (j == 0):
  self.cv.create_rectangle(lx, ly, lx + self.step, ly+self.step,
   fill="white", width=0)
 # 畫墻
 elif (j == 1):
  img.append(PhotoImage(file="imgs/wall.png"))
  self.cv.create_image(lx, ly, anchor=NW, image=img[imgLen - 1])
 elif (j == 2):
  img.append(PhotoImage(file="imgs/human.png"))
  self.cv.create_image(lx, ly, anchor=NW, image=img[imgLen - 1])
 # 畫箱子
 elif (j == 3):
  img.append(PhotoImage(file="imgs/box.png"))
  self.cv.create_image(lx, ly, anchor=NW, image=img[imgLen - 1])
 elif (j == 4):
  img.append(PhotoImage(file="imgs/terminal.png"))
  self.cv.create_image(lx, ly, anchor=NW, image=img[imgLen - 1])
 elif (j == 5):
  img.append(PhotoImage(file="imgs/star.png"))
  self.cv.create_image(lx, ly, anchor=NW, image=img[imgLen - 1])
 elif (j == 6):
  img.append(PhotoImage(file="imgs/t_man.png"))
  self.cv.create_image(lx, ly, anchor=NW, image=img[imgLen - 1])
 x += 1
 x = 0
 y += 1

這里說一下,cv的方法,這里用到了兩個,一個是create_image一個是create_rectangle:

#繪畫矩形
cv.create_rectangle(sx, sy, ex, ey, key=value...)
1、前兩個參數(shù)sx、sy(s代表start)為左上角坐標(biāo)
2、后兩個參數(shù)ex、ey(e代表end)表示右下角坐標(biāo)
3、而后面的key=value...表示多個key=value形式的參數(shù)(順序不固定)
如:
#填充色為紅色
fill = "red"
#邊框色為黑色
outline = "black"
#邊框?qū)挾葹?
width = 5

具體使用例如:
#在左上角畫一個邊長為30,的黑色矩形
cv.create_rectangle(0, 0, 30, 30, fill="black", width=0)

然后是繪制圖片:

#這里要注意img必須是全局對象
self.cv.create_image(x, y, anchor=NW, img)
1、前兩個參數(shù)依舊是坐標(biāo),但是這里不一定是左上角坐標(biāo),x,y默認(rèn)是圖片中心坐標(biāo)
2、anchor=NW,設(shè)置anchor后,x,y為圖片左上角坐標(biāo)
3、img是一個PhotoImage對象(PhotoImage對象為tkinter中的對象),PhotoImage對象的創(chuàng)建如下

#通過文件路徑創(chuàng)建PhotoImage對象
img = PhotoImage(file="img/img1.png")

因為我自己也不是非常了解,所以更細(xì)節(jié)的東西我也說不出來了。

然后是實際坐標(biāo)的問題,上面說的坐標(biāo)都是以數(shù)組為參考。而實際繪圖時,需要用具體的像素。在繪制過程中,需要繪制兩種,矩形、圖片。

  • 矩形:矩形需要兩個坐標(biāo)。當(dāng)數(shù)組坐標(biāo)為(1,1)時,因為單元的間隔為step(30),所以對應(yīng)的像素坐標(biāo)為(30, 30)。(2,2)對應(yīng)(60,60),即(x*step,y*step),而終點位置為(x*step+step,y*step+step)。
  • 圖片:繪制圖片只需要一個坐標(biāo),左上角坐標(biāo),這個是前面一樣為(x*step, y*step)。

上面還有一個重要的點,我在最開始定義了img列表,用于裝圖片對象。開始我嘗試用單個圖片對象,但是在繪制圖片的時候只會顯示一個,后面想到用img列表代替,然后成功了。(因為我學(xué)的不是非常扎實,也解釋不清楚)。

在繪制圖片時有以下兩個步驟:

#根據(jù)數(shù)組元素,創(chuàng)建相應(yīng)的圖片對象,添加到列表末尾
img.append(PhotoImage(file="imgs/wall.png"))

#在傳入圖片對象參數(shù)時,使用img[imgLen - 1],imgLen為列表當(dāng)前長度,而imgLen-1就是最后一個元素,即剛剛創(chuàng)建的圖片對象
self.cv.create_image(lx, ly, anchor=NW, image=img[imgLen - 1])

4、move

def move(event):
 global x, y, boxs, back, mission,mapList, map
 direction = event.char

 #判斷人背后的東西
 # 在空白處的人
 if (map[y][x] == 2):
 back = 0	#講back設(shè)置為空白
 # 在終點上的人
 elif (map[y][x] == 6):
 back = 4	#將back設(shè)置為終點
	
	#如果按的是w
 if(direction == 'w'):
 	#獲取移動方向前方的坐標(biāo)
 ux, uy = x, y-1
 #如果前方為墻,直接return
 if(map[uy][ux] == 1):
 return
 # 前方為空白(可移動)
 if (map[uy][ux] == 0):
 map[uy][ux] = 2		#將前方設(shè)置為人
 # 前方為終點
 elif (map[uy][ux] == 4):
 map[uy][ux] = 6		#將前方設(shè)置為終點

 # 前方為已完成的箱子
 elif (map[uy][ux] == 5):
 	#已完成箱子前面為箱子已完成箱子或者墻都不能移動
 if (map[uy - 1][ux] == 3 or map[uy - 1][ux] == 5 or map[uy - 1][ux] == 1):
 return
 # 已完成前面為空白(可移動)
 elif (map[uy - 1][ux] == 0):
 map[uy - 1][ux] = 3		#箱子向前移動
 map[uy][ux] = 6			#已完成箱子處原本是終點,人移動上去之后就是6了
 boxs += 1				#箱子移出,箱子數(shù)量要+1
 #已完成箱子前面為終點(可移動)
 elif (map[uy - 1][ux] == 4):
 map[uy - 1][ux] = 5		#前方的前方設(shè)置為已完成箱子
 map[uy][ux] = 6			#前方的箱子處原本是終點,人移動上去后是6
 # 前方為箱子
 elif (map[uy][ux] == 3):
 # 箱子不能移動
 if (map[uy - 1][ux] == 1 or map[uy - 1][ux] == 3 or map[uy - 1][ux] == 5):
 return
 # 箱子前方為空白
 elif (map[uy - 1][ux] == 0):
 map[uy - 1][ux] = 3
 map[uy][ux] = 2
 # 箱子前方為終點
 elif (map[uy - 1][ux] == 4):
 map[uy - 1][ux] = 5
 map[uy][ux] = 2
 boxs -= 1
 
 #前面只是改變了移動方向的數(shù)據(jù),當(dāng)前位置還是2或6,此時把當(dāng)前位置設(shè)置為back
 map[y][x] = back
 #記錄移動后的位置
 y = uy

 # 清除屏幕,并繪制地圖
 cv.delete("all")
 painter.drawMap()
 if(boxs == 0):
 print("游戲結(jié)束")

這里只講了一個方向的,因為其它方向代碼非常類似也就列出來了。唯一的區(qū)別就是前方的坐標(biāo)和前方的前方的坐標(biāo)具體如下:

  • 向前:前方ux,uy=x,y-1,前方的前方ux,uy-1
  • 向下:前方ux,uy=x,y+1,前方的前方ux,yu+1
  • 向左:前方ux,uy=x-1,y,前方的前方ux-1,uy
  • 向右:前方ux,uy=x+1,y,前方的前方ux+1,uy

六、總結(jié)

因為本身對Python語言的不了解,在寫博客中難免會有解釋不清楚或者錯誤的地方,非常抱歉,希望大家見諒。

這個游戲用的更多的是面向過程的思想,而可以改進(jìn)的地方也非常多。對于改進(jìn)工作我也讓Python大佬Clever_Hui來幫忙完成了,因為修改后的代碼不是非常了解,所有我分享的是我原本的代碼。源碼兩份我都會上傳,感謝大家支持。

原版:鏈接: https://pan.baidu.com/s/1KJgDFr3nwYW8BUAw-JjZbQ 提取碼: a7kn

改進(jìn)版:鏈接: https://pan.baidu.com/s/1UOEKVdjSPidkK9SZdO0jLw 提取碼: ipi2

以上所述是小編給大家介紹的Python使用tkinter模塊實現(xiàn)推箱子游戲,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關(guān)文章

  • Python opencv圖像基本操作學(xué)習(xí)之灰度圖轉(zhuǎn)換

    Python opencv圖像基本操作學(xué)習(xí)之灰度圖轉(zhuǎn)換

    使用opencv將圖片轉(zhuǎn)為灰度圖主要有兩種方法,第一種是將彩色圖轉(zhuǎn)為灰度圖,第二種是在使用OpenCV讀取圖片的時候直接讀取為灰度圖,今天通過實例代碼講解Python opencv圖像基本操作學(xué)習(xí)之灰度圖轉(zhuǎn)換,感興趣的朋友一起看看吧
    2023-02-02
  • python用faker庫批量生成假數(shù)據(jù)

    python用faker庫批量生成假數(shù)據(jù)

    這篇文章主要介紹了python用faker庫批量生成假數(shù)據(jù),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • Python實現(xiàn)簡單的文本相似度分析操作詳解

    Python實現(xiàn)簡單的文本相似度分析操作詳解

    這篇文章主要介紹了Python實現(xiàn)簡單的文本相似度分析操作,結(jié)合實例形式分析了Python基于分詞API庫jieba及文本相似度庫gensim針對文本進(jìn)行相似度分析操作的實現(xiàn)技巧與注意事項,需要的朋友可以參考下
    2018-06-06
  • 讓你Python到很爽的加速遞歸函數(shù)的裝飾器

    讓你Python到很爽的加速遞歸函數(shù)的裝飾器

    這篇文章主要介紹了讓你Python到很爽的加速遞歸函數(shù)的裝飾器,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • Python用20行代碼實現(xiàn)批量摳圖功能

    Python用20行代碼實現(xiàn)批量摳圖功能

    在日常的工作和生活中,我們經(jīng)常會遇到需要摳圖的場景,即便是只有一張圖片需要摳,也會摳得我們不耐煩。本文將為大家分享一個20行代碼就能實現(xiàn)是批量摳圖,需要的可以參考一下
    2022-05-05
  • 淺談Python程序與C++程序的聯(lián)合使用

    淺談Python程序與C++程序的聯(lián)合使用

    這篇文章主要介紹了淺談Python程序與C++程序的聯(lián)合使用,主要包括6中方案,需要的朋友可以參考下
    2015-04-04
  • Python使用pyperclip庫操作剪切板

    Python使用pyperclip庫操作剪切板

    本文將介紹如何使用pyperclip庫來進(jìn)行剪切板操作,包括復(fù)制、粘貼文本和圖片,以及清空剪切板內(nèi)容等功能,具有一定的參考價值,感興趣的 可以了解一下
    2024-03-03
  • Python基礎(chǔ)入門之if判斷語句

    Python基礎(chǔ)入門之if判斷語句

    Python條件語句是通過一條或多條語句的執(zhí)行結(jié)果(True或者False)來決定執(zhí)行的代碼塊,下面這篇文章主要給大家介紹了關(guān)于Python基礎(chǔ)入門之if判斷語句的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • Python3.8中使用f-strings調(diào)試

    Python3.8中使用f-strings調(diào)試

    這篇文章主要介紹了Python3.8中使用f-strings調(diào)試的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • python基礎(chǔ)pandas的drop()用法示例詳解

    python基礎(chǔ)pandas的drop()用法示例詳解

    這篇文章主要介紹了python基礎(chǔ)pandas的drop()用法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04

最新評論