首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启动socket服务器时GUI应用程序停止

启动socket服务器时GUI应用程序停止
EN

Stack Overflow用户
提问于 2019-08-21 23:41:18
回答 1查看 20关注 0票数 0

我的项目是thinner,如果我启动socket服务器,那么程序就会停止。

我有一个Tkinter项目,如果我启动了这个类,程序就会停止并挂起。

代码语言:javascript
复制
class msyslog:
    def __init__(self):
        HOST, PORT = "10.0.1.18", 514

        global table_name
        global db_name
        global db_host
        global db_user
        global db_password

        db_name = 'logging'
        table_name = 'logs'
        db_user = 'root'
        db_password = ''
        db_host = '127.0.0.1'
        db_port = 3306

        try:
            # mysql_connection=mysql.connector.connect(user =db_user, password =db_password, host = db_host, port = db_port)
            mysql_connection = mysql.connector.connect(host=db_host, user=db_user, passwd=db_password)
        except mysql.connector.custom_error_exception():
            print('Error:')

        cursor = mysql_connection.cursor()
        create_db(db_name, cursor)

        cursor = mysql_connection.cursor()
        create_table(db_name, table_name, cursor)

        mysql_connection.commit()

        mysql_connection.close()


        server = socketserver.UDPServer((HOST, PORT), SyslogUDPHandler)
        server.db_name = db_name
        server.table_name = table_name
        server.db_user = db_user
        server.db_password = db_password
        server.db_host = db_host
        server.db_port = db_port

        server.serve_forever()

如何让服务器在后台工作,让GUI项目作为界面工作。

EN

回答 1

Stack Overflow用户

发布于 2019-08-22 01:37:18

问题

Tkinter停止了,因为Python永远忙于为服务器服务。你所做的就是告诉我该开始了。Tkinter有自己的循环(mainloop函数),当使用你的GUI时需要自由运行,所以tkinter可以添加小部件,销毁小部件,编辑小部件等等。同时,您对MySQL客户机说要永远为服务器服务,从而防止主循环自由循环。主循环等待,直到您使用按钮调用的函数完成。但是,你说过要永远服务,所以永远不会这样。

解决方案

从你的类中创建一条线程。也就是说,多个线程可以同时执行任务。

导入线程并在Python代码中执行以下语句。

代码语言:javascript
复制
threading.Thread(target=YourFunction, args=(arg1, arg2)).start()

这会让线程,以及你的类,知道如何开始。您可以使用目标调用函数,也可以使用class.__init__直接调用您的类。重要的是,你不能使用单行词。args参数是可选的。你可以在documentation中阅读更多关于线程的内容,或者直接问我。

Chris Fowl,Sincerly

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57595159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档