2022年 11月 9日

在Python中编写控制台光标定位函数gotoxy()

这个文章我写了第三遍了,前两边第一次我觉得太麻烦了换了一种方法,结果第二次没成功,找啊找,总算找到了,不需要pywin32模块,而且这个模块是真的辣鸡啊,网上找不到下载的,仅有的几个下载网址根本没速度。
直接使用内置模块ctypes里面可以调用系统api。
导入模块

import ctypes
  • 1

先编写一个COORD,在C语言中可以直接赋值,这里需要一个类

class COORD(ctypes.Structure):
	 _fields_ = [("X", ctypes.c_short), ("Y", ctypes.c_short)] 
	 def __init__(self,x,y):
		 self.X = x
		 self.Y = y
  • 1
  • 2
  • 3
  • 4
  • 5

然后函数需要两个参数,一个是标准输出句柄,一个是坐标,第一个参数实质上是一个int,STD_OUTPUT_HANDLE的值是-11
获取句柄

STD_OUTPUT_HANDLE= -11
hOut = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
  • 1
  • 2

调用函数设置坐标

ctypes.windll.kernel32.SetConsoleCursorPosition(hOut,INIT_POS)
  • 1

测试一下

INIT_POS=COORD(12,5)
print("ssssssss")
  • 1
  • 2

在使用之前一定要先清屏,不然会错位,红色圈出来的是我要输出的内容
在这里插入图片描述先清屏在设置坐标,对比一下,差别很大。

import os
os.system("cls");
...
  • 1
  • 2
  • 3

在这里插入图片描述