Tkinter:开始后如何停止工作

时间:2019-06-11 06:35:31

标签: python multithreading tkinter

我对某些代码有疑问。因此,我可以启动该应用程序,但一旦启动就无法停止。我认为我需要多线程,但是没有办法。任何帮助将不胜感激

from tkinter import Tk
import sys
import tkinter as tk
import tkinter.ttk as ttk
from tkinter import messagebox
import schedule
import time
from Tweets import Tweets


class MyFirstGUI:

    def __init__(self):
        pass

    def masterframe(self, master, ):

        master = master
        master.title("A simple Sentiment Analyzer")

        _bgcolor = '#4285F4'  # X11 color: 'gray85'
        _fgcolor = '#e3f2fd'  # X11 color: 'black'
        _compcolor = '#d9d9d9'  # X11 color: 'gray85'
        _ana1color = '#d9d9d9'  # X11 color: 'gray85'
        _ana2color = '#ececec'  # Closest X11 color: 'gray92'
        style = ttk.Style()

        if sys.platform == "win32":
            style.theme_use('winnative')

            style.configure('.', background=_bgcolor)

            style.configure('.', foreground=_fgcolor)

            style.configure('.', font="Arial")

            style.map('.', background=[('selected', _compcolor), ('active', _ana2color)])

        master.geometry("600x450+650+150")

        master.configure(background="#d9d9d9")
        return master

我跳过了按钮。其余的代码是一个

        def job_get_tweet(self):
        # api-endpoint
        base_url = "http://192.168.0.17/Sentitweet/"
        tweet_word = key_input.get()
        tweet = Tweets()
        tweet.retrieve_tweet(base_url, tweet_word)

    def job_fetch_tweet_from_db(self):
        # api-endpoint
        base_url = "http://192.168.0.17/Sentitweet/"
        tweet_get = Tweets()
        tweet_get.get_tweet_from_db(base_url)

    def runjob(self, ):
        messagebox.showinfo('Tweet Scheduler', 'Tweet has been scheduled to run ' + time_selection.get() + ' hours')
        schedule.every(int(time_selection.get())).hours.do(self.job_get_tweet())
        # schedule.every(1).minutes.do(job_fetch_tweet_from_db)
        # schedule.every( ).day.at("10:30").do(job)
        # schedule.every(5).to(10).minutes.do(job)
        # schedule.every( ).monday.do(job)
        # schedule.every( ).wednesday.at("13:15").do(job)
        # schedule.every( ).minute.at(":17").do(job)
        running = True
        while running:
            schedule.run_pending()
            time.sleep(1)

    def stopjob(self):
        print('job stopped')


我读到我必须使用多线程才能启动和停止,问题是我不知道该怎么做。有什么想法吗?

0 个答案:

没有答案