gpt4 book ai didi

python - 如何让 PySimpleGui 读取我的输入并更新我的窗口?

转载 作者:行者123 更新时间:2023-12-04 14:08:25 25 4
gpt4 key购买 nike

我不确定之前是否已经回答过这个问题,如果是重复的话,很抱歉,但我无法在任何地方清楚地找到它。
我正在为我的简单 AIML 聊天机器人制作一个 GUI(主要用于娱乐目的)
我找到了 PySimpleGui。我阅读了它的整个文档并尝试使用他们的代码,将它实现到我从教程中获得的我自己的小代码中。
起初:


kernel = aiml.Kernel()
kernel.learn("std-startup.xml")
kernel.respond("load aiml b")

while True:
input_text = input("You: ")
response = kernel.respond(input_text)
print("Csigusz Foxoup (bot): "+response)

我让这段代码正常工作,一切都很好(感谢 Misbah)
我让我的机器人在 cmd 中准确地说了一些话。
接下来我想添加一个简单的 gui。
我宁愿它看起来更健谈,但我缺乏编码经验所能想到的只是一个带有 2 个按钮和 2 个文本的简单窗口。
cod 看起来像这样:
import aiml
import PySimpleGUI as sg

kernel = aiml.Kernel()
kernel.learn("std-startup.xml")
kernel.respond("load aiml b")
sg.theme('LightBlue 1')
layout = [[sg.Text('You: '), sg.Text(size=(12,1), key='-mytext-')],
[sg.Text('Csigusz Foxoup (bot): '), sg.Text(size=(12,1), key='-CSI-')],
[sg.Input(key='-myinput-')],
[sg.Button('Send message'), sg.Button('Bye!')]]

window = sg.Window('Csigusz Foxoup, your friend in a box (bot)', layout, [200,400])


while True:
event = window.read()
values = window.read()
if event == sg.WIN_CLOSED or event == 'Bye!':
break
if event == 'Send message':
# change the "output" element to be the value of "input" element
input_text = (values)
response = kernel.respond(input_text)
window['-mytext-'].update(values['-myinput-'])
print("Csigusz Foxoup(bot): "+response)

window.close()

它为我提供了一个漂亮的小窗口。 looks like this
我的问题是,当我输入内容并单击按钮时,没有任何 react 。当我按下关闭窗口 (X) 时,我收到一条错误消息:“您已经尝试了 100 次来读取关闭的窗口,您需要添加对事件 == WIN_CLOSED, ERROR 的检查”
现在因为我有一张支票,还有一个按钮,我不知道为什么它不起作用。也不知道如何让按钮向我的机器人发送用户文本,然后检索机器人输出。
我究竟做错了什么?提前感谢您的所有回复。非常感谢所有帮助! 🙏

最佳答案

你所有的问题是你使用 .read()以错误的方式。
您只需使用一个 .read()它将两个值作为元组返回 (event, values)

event, values = window.read()

print('event:', event)
print('values:', values)

最少的工作代码(没有 aiml )
import PySimpleGUI as sg

sg.theme('LightBlue 1')
layout = [[sg.Text('You: '), sg.Text(size=(50,1), key='-mytext-')],
[sg.Text('Csigusz Foxoup (bot): '), sg.Text(size=(50,1), key='-CSI-')],
[sg.Input(key='-myinput-')],
[sg.Button('Send message'), sg.Button('Bye!')]]

window = sg.Window('Csigusz Foxoup, your friend in a box (bot)', layout, [200,400])

while True:
event, values = window.read()
print('event:', event)
print('values:', values)

if event == sg.WIN_CLOSED or event == 'Bye!':
break

if event == 'Send message':
input_text = values['-myinput-']
response = "some response for " + input_text
#response = kernel.respond(input_text)
window['-mytext-'].update(input_text)
window['-CSI-'].update(response)

window.close()

关于python - 如何让 PySimpleGui 读取我的输入并更新我的窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66537095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com