如何在Kivy Python窗口中显示数组而非控制台打印?
实现数组在窗口显示的方案
你需要在ThirdWindow的界面布局中添加文本显示控件,将数组内容格式化为字符串后赋值给控件,替代控制台打印逻辑。
步骤1:添加窗口显示控件
如果用Kivy的kv语言定义界面,给ThirdWindow添加带ID的文本控件(推荐用Label,配合格式控制实现对齐):
<ThirdWindow>: ScrollView: Label: id: array_display text_size: self.width, None halign: 'left' valign: 'top' size_hint_y: None height: self.texture_size[1] padding: 10, 10
如果直接在Python类中创建控件,可在__init__方法中初始化:
class ThirdWindow(Screen): def __init__(self, **kwargs): super().__init__(**kwargs) self.array_display = Label( text_size=(self.width, None), halign='left', valign='top', size_hint_y=None, padding=(10,10) ) scroll_view = ScrollView(size_hint=(1,1)) scroll_view.add_widget(self.array_display) self.add_widget(scroll_view)
步骤2:修改display方法,格式化数组并赋值
把原控制台打印的逻辑改成字符串拼接,再传递给显示控件:
class ThirdWindow(Screen): # 先添加上面的控件初始化代码... def display(self): order = int(ord.abc) n = int(inc.abc) arr = funarr.abc display_text = "" for i in range(order): row_content = "" for j in range(order): row_content += '%4d ' % (arr[i][j] * n) display_text += row_content + '\n' # 将格式化后的文本赋值给窗口控件 self.array_display.text = display_text
额外说明
- 原代码中
i=int(funi.abc)和j=int(funj.abc)未被使用(循环内重新定义了同名变量),可直接删除以避免混淆。 - 用
ScrollView包裹控件是为了应对大数组,确保内容可滚动查看。
内容的提问来源于stack exchange,提问作者Arina
相关产品推荐
相关产品推荐

