任何人都可以帮我用PySimpleGUI完成这项工作

2024-09-30 03:24:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我要做一个程序来教孩子乘法器,这是作业的核心代码

#include <stdio.h>

  #define MIN       1
  #define MAXINDEX  10
  #define MAXTABLE  10
  #define STEP      1

 void main(void)
  {
    int i,j ;

    for (j = MIN; j <MAXTABLE; j += STEP)  {
        for (i = MIN; i <= MAXINDEX; i += STEP)
            printf(“%3d * %3d = %3d\n”, i, j, i*j);
        printf(“\n---------------\n\n”);
    }

    for (i = MIN; i <= MAXINDEX; i += STEP)
        printf(“%3d * %3d = %3d\n”, i, MAXTABLE, i*MAXTABLE);
 }

之后我不得不将它重写为下一代语言,所以我设计用python编写它。 像这样

j=1
i=1
for j in range(1,11):
    for i in range(1,11):
        print('%3d * %3d =%3d' % (i, j, i *j))
    if j!=10:   
        print("\n---------------\n")
    else:
        print("\n")

在那之后,我必须为它制作一个UI,所以这个图像就是我设计的,就像这样This is the design of me

因为我刚学了3天python,所以我尽力写了以下内容:

import PySimpleGUI as sg
import os.path
def Corecode():
    j=1
    i=1
    for j in range(1,11):
        for i in range(1,11):
            print('%3d * %3d =%3d' % (i, j, i *j))
        if j!=10:   
            print("\n---------------\n")
        else:
            print("\n")
from PySimpleGUI.PySimpleGUI import R, Image, Multiline
showrobot_column = [
    [sg.Image('E:\img\robot.png',size = (300,300))],
],
show_Textbox_selectbox = [
    [sg.Multiline(size=(50,20),key='-def-')],
    [sg.Listbox(values=['a','b','c','d'], enable_events=True, size=(50,20), key="")]

    ]


layout = [
    [sg.Column(showrobot_column),
    sg.VSeparator(),
    sg.Column(show_Textbox_selectbox)
    ]
]
window = sg.Window("First Test",layout)
while True:
    event, value = window.read()
    if event == sg.WIN_CLOSED:
        break
window.close()

我设计的目的是让它像机器人一样说话,让孩子们通过按钮进行交互,但是我发现我不能插入图像,也找不到一种方法通过前面的核心代码打印乘法器表,所以有人可以帮我完成代码或告诉我sg.image出错的原因。泰


Tags: 代码inimportforifsteprangesg
2条回答

这是对Jason答案的一个无耻的小调整(选择他的答案,因为它是正确的)

希望包括一些可能对某些人有用的功能。一个是,几乎所有元素都有一个初始值,您可以在布局中设置该值,而不是最终确定它然后再设置它们。它减少了代码

我也在这个答案中加入了一个“饰品”作为测试。这样,您就可以在此StackOverflow页面上运行该示例

import PySimpleGUI as sg


def corecode(base):
    return ("\n"+"-"*13+"\n").join([f'{i+1:>2d} * {base:>2d} = {(i+1)*base:>3d}' for i in range(10)])

sg.theme('DarkBlue3')

list_values = [f'{i+1:>2d}' for i in range(10)]

show_Textbox_selectbox = [[sg.Multiline(default_text=corecode(1), size=(15, 20), expand_y=True, key='-MULTILINE-')],
    [sg.Listbox(values=list_values, default_values=[list_values[0]], enable_events=True, size=(15, 10), key="-LISTBOX-")]]

layout = [
    [sg.Image(sg.EMOJI_BASE64_HAPPY_THUMBS_UP), sg.VSeparator(), sg.Column(show_Textbox_selectbox)]
         ]

window = sg.Window("First Test", layout, font='Courier 12')

while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        break
    elif event == '-LISTBOX-':
        base = int(values[event][0])
        window['-MULTILINE-'].update(value=corecode(base))

window.close()

这里是一个链接,如果它没有正确嵌入-https://trinket.io/pygame/d59ef3b352

&13; 第13部分,;
<iframe src="https://trinket.io/embed/pygame/d59ef3b352" width="100%" height="600" frameborder="0" marginwidth="0" marginheight="0" allowfullscreen></iframe>
和#13;
和#13;

试试这个

import PySimpleGUI as sg


def corecode(base):
    return ("\n"+"-"*13+"\n").join([f'{i+1:>2d} * {base:>2d} = {(i+1)*base:>3d}' for i in range(10)])

sg.theme('DarkBlue3')
sg.set_options(font=("Courier New", 12))

showrobot_column = [
    [sg.Image('E:/img/robot.png', size = (300, 300))],
]

list_values = [f'{i+1:>2d}' for i in range(10)]
show_Textbox_selectbox = [
    [sg.Multiline(size=(15, 20), expand_y=True, key='-MULTILINE-')],
    [sg.Listbox(values=list_values, enable_events=True, size=(15, 10), key="-LISTBOX-")],
]

layout = [
    [sg.Column(showrobot_column),
     sg.VSeparator(),
     sg.Column(show_Textbox_selectbox),],
]

window = sg.Window("First Test", layout, finalize=True)
multiline = window['-MULTILINE-']
multiline.update(value=corecode(1))
listbox = window['-LISTBOX-']
listbox.update(set_to_index=0)
while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        break
    elif event == '-LISTBOX-':
        base = int(values[event][0])
        multiline.update(value=corecode(base))

window.close()

相关问题 更多 >

    热门问题