Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将python逻辑应用到tkinter GUI中?它';这是一个简单的GET请求程序_Python_Python 3.x_Tkinter_Python Requests - Fatal编程技术网

如何将python逻辑应用到tkinter GUI中?它';这是一个简单的GET请求程序

如何将python逻辑应用到tkinter GUI中?它';这是一个简单的GET请求程序,python,python-3.x,tkinter,python-requests,Python,Python 3.x,Tkinter,Python Requests,我正在尝试制作一个发送短信的程序。我唯一的问题是我不能用tkinter做任何事情。对不起,如果听起来有点混乱,英语不是我的第一语言,我会尽力解释清楚 这是一个通过my API发送SMS文本的简单GET请求: #获取 导入请求 to=输入(“输入接收器:”) fromm=输入(“输入发件人:”) 消息=输入(“输入消息:”) 有效负载={'to':to'from':fromm,'message':message,'email':'@example.com','api_secret':'123456

我正在尝试制作一个发送短信的程序。我唯一的问题是我不能用tkinter做任何事情。对不起,如果听起来有点混乱,英语不是我的第一语言,我会尽力解释清楚

这是一个通过my API发送SMS文本的简单GET请求:

#获取
导入请求
to=输入(“输入接收器:”)
fromm=输入(“输入发件人:”)
消息=输入(“输入消息:”)
有效负载={'to':to'from':fromm,'message':message,'email':'@example.com','api_secret':'123456789abcdefg'}
r=请求。获取('https://example.com/dashboard/api,参数=有效载荷)
打印(右文本)
发送此Get请求后,我们将收到一个json响应,确认消息已发送

这就是我使用tkinter的GUI的外观:

从tkinter导入*
def发送消息():
打印('已发送')
def clear_text():
打印('已清除')
#窗口对象
app=Tk()
#寄件人
发送方\u text=StringVar()
发送者标签=标签(应用程序,text='Sender',font=('bold',14),pady=20)
发送者标签网格(行=0,列=0,粘性=W)
发送者\条目=条目(应用程序,文本变量=发送者\文本)
Sender_entry.grid(行=0,列=1)
#接受者
接收方\文本=StringVar()
接收器标签=标签(应用程序,text='Receiver',font=('bold',14))
接收器标签网格(行=0,列=2,粘性=W)
接收者输入=输入(应用程序,文本变量=接收者文本)
Receiver_entry.grid(行=0,列=3)
#信息
Message_text=StringVar()
信息标签=标签(应用程序,text='Message',font=('bold',14))
消息标签网格(行=1,列=0,粘性=W)
消息输入=输入(应用程序,文本变量=消息输入)
消息\u entry.grid(行=1,列=1)
#钮扣
发送按钮(app,text='send',width=12,command=send\u message)
发送网格(行=2,列=0,pady=20)
清除按钮(应用,text='clear',width=12,command=clear\u text)
清除网格(行=2,列=1)
应用程序标题(“短信”)
应用几何(“430x145”)
#开始
app.mainloop()
我花了大约两个小时来学习如何制作GUI,但现在我完全迷路了。我不知道如何在GUI中实现逻辑。 如何使文本和按钮工作?在哪里添加函数? 我真的迷路了


非常感谢您的帮助。

您只需将逻辑(将所有
input()
替换为
xxx.get()
)放入函数
send\u message()

导入请求
def发送消息():
receiver=receiver\u text.get()
发送者=发送者\u text.get()
message=message\u text.get()
有效负载={'to':接收方,'from':发送方,'message':消息,
'email':'@example.com','api_secret':'123456789abcdefg'}
r=请求。获取('https://example.com/dashboard/api,参数=有效载荷)
打印(右文本)

参考您的GUI让我们为您的代码提供更多的结构,以便更清楚地看到正在发生的事情。 我已将窗口的设置置于函数
my_window
中,并从
main
向其传递参数
app
。按下按钮
send
sender\u text
receiver\u text
message\u text
的值通过使用
sender\u text.get(),
receiver\u text.get()等获得。。这些结果通过
lambda
函数传递给函数
send_message

from tkinter import Tk, StringVar, Label, Entry, Button, W


def send_message(snd_txt, rcv_txt, msg_txt):
    print(f'sent: {snd_txt}, {rcv_txt}, {msg_txt}')


def clear_text():
    print('cleared')


def my_window(app):

    # Sender
    sender_text = StringVar()
    sender_label = Label(app, text='Sender', font=('bold', 14), pady=20)
    sender_label.grid(row=0, column=0, sticky=W)
    sender_entry = Entry(app, textvariable=sender_text)
    sender_entry.grid(row=0, column=1)

    # Receiver
    receiver_text = StringVar()
    receiver_label = Label(app, text='Receiver', font=('bold', 14))
    receiver_label.grid(row=0, column=2, sticky=W)
    receiver_entry = Entry(app, textvariable=receiver_text)
    receiver_entry.grid(row=0, column=3)

    # Message
    message_text = StringVar()
    message_label = Label(app, text='Message', font=('bold', 14))
    message_label.grid(row=1, column=0, sticky=W)
    message_entry = Entry(app, textvariable=message_text)
    message_entry.grid(row=1, column=1)

    # Buttons
    send_btn = Button(
        app, text='Send', width=12,
        command=lambda: send_message(sender_text.get(), receiver_text.get(), message_text.get()))
    send_btn.grid(row=2, column=0, pady=20)
    clear_btn = Button(app, text='Clear', width=12, command=clear_text)
    clear_btn.grid(row=2, column=1)


def main():
    app = Tk()
    app.title('SMS')
    app.geometry('430x145')
    my_window(app)
    app.mainloop()


if __name__ == '__main__':
    main()
但是,更常见的是将
my\u window
定义为
class
,并使该
class
的函数
清除文本
发送消息
方法更加灵活

from tkinter import Tk, StringVar, Label, Entry, Button, W


class my_window:

    def __init__(self, app):
        # Sender
        self.sender_text = StringVar()
        sender_label = Label(app, text='Sender', font=('bold', 14), pady=20)
        sender_label.grid(row=0, column=0, sticky=W)
        sender_entry = Entry(app, textvariable=self.sender_text)
        sender_entry.grid(row=0, column=1)

        # Receiver
        self.receiver_text = StringVar()
        receiver_label = Label(app, text='Receiver', font=('bold', 14))
        receiver_label.grid(row=0, column=2, sticky=W)
        receiver_entry = Entry(app, textvariable=self.receiver_text)
        receiver_entry.grid(row=0, column=3)

        # Message
        self.message_text = StringVar()
        message_label = Label(app, text='Message', font=('bold', 14))
        message_label.grid(row=1, column=0, sticky=W)
        message_entry = Entry(app, textvariable=self.message_text)
        message_entry.grid(row=1, column=1)

        # Buttons
        send_btn = Button(app, text='Send', width=12, command=self.send_message)
        send_btn.grid(row=2, column=0, pady=20)
        clear_btn = Button(app, text='Clear', width=12, command=self.clear_text)
        clear_btn.grid(row=2, column=1)

    def send_message(self):
        print(f'sent: {self.sender_text.get()}, '
              f'{self.receiver_text.get()}, '
              f'{self.message_text.get()}')

    def clear_text(self):
        self.sender_text.set('')
        self.receiver_text.set('')
        self.message_text.set('')
        print('cleared')


def main():
    app = Tk()
    app.title('SMS')
    app.geometry('430x145')
    my_window(app)
    app.mainloop()


if __name__ == '__main__':
    main()

听起来你会从关于tkinter的指南或教程中受益匪浅。只需将
to=input(…)
替换为
to=Receiver\u text.get()
(也适用于
from
message
)。将修改后的代码放入
send_message()
函数中。我尝试了,但失败了:(错误是什么?嘿,谢谢!我成功地应用了第一步,但我不确定如何将修改后的代码放入send_message()中。我的语法真的很糟糕