Gotoxy C代码的Pythonic替代品

时间:2014-01-24 10:46:38

标签: python

我想为基本数据库管理制作一个菜单驱动的程序。

所以,请在下面的示例的帮助下,让我了解如何在python中使用gotoxy的替代方法。

我有C代码,它绘制了一个垂直&屏幕中心的水平线如下:

#include<stdio.h>
#define HLINE for(i=0;i<79;i++)\
                  printf("%c",196);
#define VLINE(X,Y) {\
                     gotoxy(X,Y);\
                     printf("%c",196);\
                   }
int main()
{
  int i,j;
  clrscr();
  gotoxy(1,12);
  HLINE
  for(y=1;y<25;y++)
      VLINE(39,y)
  return 0;
}

Python中是否还有类似gotoxy()的内容?

7 个答案:

答案 0 :(得分:3)

首先,标准C中没有gotoxyclrscr这样的东西。您正在使用提供它们的特定于平台的库。 Python的解决方案是相同的:使用库。一个支持大量终端并且是Python发行版的一部分的库是curses。有关文档,请参阅http://docs.python.org/2/library/curses.html

答案 1 :(得分:1)

根据this 我试过了 :  x = 4,y = 3 print "%c[%d;%df" % (0x1B, x, y),

它有效 谢谢Rutrus

答案 2 :(得分:1)

我发现这样做的最好方法是编写一个gotoxy函数:

def gotoxy(x,y):
    print ("%c[%d;%df" % (0x1B, y, x), end='')

这适用于python3。如果您想使用python2,则需要以下行: from __future__ import print_function

答案 3 :(得分:0)

在Linux和其他类UNIX系统上,您应该使用NCURSES libraty。见python ncurses howto

在Windows上,没有ncurses。您可以使用Console模块。

考虑替代方案。使用现有的GUI库会简单得多。这是list of crosspatform python UI libs

答案 4 :(得分:0)

https://pypi.python.org/pypi/npyscreen

尝试上面的链接,它奇妙地集成了“大”GUI库(如GTK,Qt,Tkinter等)的编码风格和ncurses表示。

答案 5 :(得分:0)

根据您的系统,可能值得考虑使用wconio库。无论如何,我在这里提到它是另一种选择,它有益于进行搜索的任何人。

如其他地方所述,Borland Pascal的gotoxy()和亲戚先后进入Turbo C的conio.h和其他C,但它们都不属于C语言。

wconio是conio模块中Python的部分端口,请参见

http://newcenturycomputers.net/projects/wconio.html

https://docs.python.org/3/using/windows.html?highlight=wconio

答案 6 :(得分:0)

我从 https://www.programmersought.com/article/64334507936/ 中找到以下代码,并通过添加 gotoxy() 函数完成它。

您应该首先导入 ctypes 模块:

import ctypes

class COORD(ctypes.Structure):
   _fields_ = [("X", ctypes.c_short), ("Y", ctypes.c_short)] 

   def __init__(self,x,y):
       self.X = x
       self.Y = y

def gotoxy(x,y):
    INIT_POS=COORD(y,x)
    STD_OUTPUT_HANDLE= -11
    hOut = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
    ctypes.windll.kernel32.SetConsoleCursorPosition(hOut,INIT_POS)

你应该只用 x 和 y 初始化 gotoxy(x,y)。 例如:

gotoxy(12,5)