首页 > 解决方案 > 我正在尝试列出要在一周中的确切日期显示的内容

问题描述

所以我试图让它在 PySimpleGUI 中显示一个列表,但由于这个问题它不起作用“预期类型 'list[list[Element]]', got 'list[list[() -> None ]]' 而不是“错误是关于“sg.Column(asdf)”的。

另外,如何将文本放在下一行中,例如在记事本中单击 Enter?

import PySimpleGUI as sg
import requests
import datetime

current_time = datetime.datetime.now()
dzien = datetime.datetime.today().weekday()
data = datetime.date.today()

week_days=["Poniedziełek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela"]

pon = ["Historia", "Matematyka", "Niemiecki", "Chemia", "Fizyka"]
wt = ["Angelski", "Informatyka/PP", "Biologia", "Matematyka"]
sr = ["Angileski", "Fizyka", "Matematyka", "Polski", "Wychowawcza"]
czw = ["Nic/WOS", "WF", "Religia", "Geografia"]
pt = ["Matematyka", "Polski", "Fizyka"]



def lekcje():
    if dzien == 0:
        sg.Text(pon)
    elif dzien == 1:
        sg.Text(wt)
    elif dzien == 2:
        sg.Text(sr)
    elif dzien == 3:
        sg.Text(czw)
    elif dzien == 4:
        sg.Text(pt)

asdf = [[
    lekcje
]]



layout =  [[
    sg.Column(asdf),
]]

window = sg.Window("Zegar", layout)

while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        break

window.close()

标签: pythonpysimplegui

解决方案


在下面的语句中,它表明使用的元素asdf是一个函数,而不是函数的结果,sg.Text()。所以应该是[[lekcje()]]

asdf = [[lekcje]]
layout =  [[sg.Column(asdf),]]

在函数中发现的另一个问题lekcje,weekday 可能从 0 到 6,None当 weekday 是 5 或 6 时它会返回。然后布局asdf将是[[None]]。所以它应该为案例 5 或 6 返回一些东西。

如果您想要显示的所有项目sg.Text,这里是示例

在此处输入图像描述

import PySimpleGUI as sg
import requests
import datetime

current_time = datetime.datetime.now()
dzien   = datetime.datetime.today().weekday()
data    = datetime.date.today()

week_days = ["Poniedziełek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela"]

pon = ["Historia", "Matematyka", "Niemiecki", "Chemia", "Fizyka"]
wt  = ["Angelski", "Informatyka/PP", "Biologia", "Matematyka"]
sr  = ["Angileski", "Fizyka", "Matematyka", "Polski", "Wychowawcza"]
czw = ["Nic/WOS", "WF", "Religia", "Geografia"]
pt  = ["Matematyka", "Polski", "Fizyka"]

week_subject = {0:pon, 1:wt, 2:sr, 3:czw, 4:pt}
width   = max(map(lambda x:max(map(len, x)), week_subject.values()))
height  = max(map(len, week_subject.values()))

def lekcje(dzien, size):
    text = '\n'.join(week_subject[dzien]) if dzien < 5 else ''
    return sg.Text(text, size=size)

sg.theme('DarkBlue')
sg.set_options(font=('Couier New', 16))

asdf = [[lekcje(dzien, (width, height))]]
layout =  [[sg.Column(asdf)]]
window = sg.Window("Zegar", layout)

while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        break

window.close()

推荐阅读