在Kivy中创建控制台

1 投票
2 回答
3396 浏览
提问于 2025-04-18 01:10

我正在尝试写一个非常基础的Kivy程序,想把屏幕分成三个部分:

  • 一个头部(在屏幕的顶部)
  • 一个文本区域(在屏幕的中间)
  • 一个控制台(在屏幕的底部)

到目前为止,我打算使用一个主网格布局(gridLayout),在里面放三个不同的浮动布局(floatLayout)。

下面是代码的样子:

class Logo(App):

    def build(self):
        layout = GridLayout(rows=3)
        layoutTop = FloatLayout(size=(100,300))
        layoutMid = FloatLayout(size=(100,300))
        layoutDown = FloatLayout(size=(100,300))

        logo = Image(source='imagine.png',size_hint=(.25,.25),pos=(30,380))
        blank = Label(text='', font_size = '25sp',pos=(-200,100))
        titre = Label(text='#LeCubeMedia',font_size='40sp',pos=(0,280))
        ip = Label(text='192.168.42.1',font_size='25sp',pos=(250,280))

        layoutTop.add_widget(titre)
        layoutTop.add_widget(logo)
        layoutTop.add_widget(ip)
        layoutMid.add_widget(blank)

        layout.add_widget(layoutTop)
        layout.add_widget(layoutMid)

        return layout

if __name__ == '__main__':

    Logo().run()

其实我遇到的问题是关于控制台的创建。我看了很多Kivy文档,但还是在寻找一个好的方法来做这种小部件。

你觉得如果我用Python的print把东西发送到我的Kivy应用里,然后在需要发送其他内容时刷新一下(把之前的打印内容擦掉),这样会怎么样?这样就像一个控制台。但到现在为止,我还没有太多想法……

有什么建议吗?

2 个回答

2

这段内容是关于使用kivy这个工具进行一些尝试的,代码比较旧,你可能需要稍微调整一下才能在最新的kivy上运行。kivy-designer里也包含了这个功能。这里使用了两种文本输入框,一个用来显示历史记录,另一个用来输入内容。

如果想做一个更好的控制台,推荐使用pyte,这样可以直接在一个小部件的画布上绘制字符。这样就能免费获得VT仿真效果。

2

我在Kivy中见过两种控制台。第一种是一个可以输入多行文本的框,放在一个可以滚动的视图里,你可以把新输入的文字加到旧文字后面。第二种是一个放在滚动视图里的盒子布局或网格布局,每次控制台输出的内容都是一个单独的标签,放在这个布局里。

撰写回答