我如何一起使用Tkinter和Telebot?

2024-04-28 11:16:01 发布

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

我一直在做一个Python项目,但有一点我被卡住了。基本上,我有一个GUI,5秒钟自动更新一次。我使用方法.after(5000, main)完成了它,其中的主函数如下所示

def main():
    global lastthreshold
    global run
    global lastaction
    global bakiye
    global lif
    global gsecenek
    paributl, binancedolar, paribudolar, dolar = getData()
    farklow, farkhigh = diff(paributl, binancedolar, paribudolar)
    data = guiDataMaker(paributl, binancedolar, paribudolar, farklow, farkhigh)
    gui = Gui(data, dolar, lastthreshold, alsatmiktar, bakiye)
    #print(*data, sep="\n")
    #print(*cooldown.items(), sep="\n")
    if run:
        lif = gui.gui()
        for i in paributl.keys():
            cooldown[i] = "NONE"
        run = False
    gui.secenek.set(gsecenek)
    runbot = runBot(lastthreshold, bakiye, data, cooldown, alsatmiktar)
    if runbot[0] != None:
        currency, guncelfark, fiyat, newbakiye, buydate, islem = runbot
        bakiye = newbakiye
        guncelislem = (currency, guncelfark, fiyat, newbakiye, buydate, islem)
        lastaction = (currency, guncelfark, fiyat, newbakiye, buydate, islem)
        gui.updateGuiData(lif, cooldown, guncelislem)
    else:
        gui.updateGuiData(lif, cooldown, lastaction)

    src.after(5000, main)
    src.mainloop()
    
main()
#src.mainloop()
#bot.polling()

我的实际代码大约是450行,所以我认为把它粘贴在这里会浪费空间。不过,如果它能帮助你更容易地帮助我,我也能做到。无论如何,上面的代码与由src.mainloop()创建的单个线程完美配合

在这个项目中,我试图做的基本上是一个交易机器人。为了帮助用户了解发生了什么,我使用Tkinter库创建了一个gui。我只创建一次gui,并且每5秒更新一次数据

我想要实现的是创建一个用户可以交互的电报机器人。例如,use应该能够键入/BTC-USD以获取有关比特币dolar的信息。到目前为止,我实现了以电报的形式向用户发送机器人的每一次买卖操作。然而,我现在遇到的困难是获取用户的命令,因为它需要我使用另一个线程bot.polling()。无论我在代码中放置哪一行代码,它都会导致GUI“不响应”

简单地说,我的问题是如何让一个电报机器人通过发送消息和获取命令与用户交互,以及一个每5秒自动更新一次的GUI


Tags: 代码用户srcdatamain机器人guiglobal