(frame: tk.Frame)
Create and place elements for twitter in the login frame
        :param frame: frame to set up, in this case the login tab
        :return: none
Create and place elements for twitter in the login frame
        :param frame: frame to set up, in this case the login tab
        :return: none
Create and place elements for twitter in the login frame : param frame : frame to set up in this case the login tab : return : none
def build_twitter_login(frame: tk.Frame):
        """
        Create and place elements for twitter in the login frame
        :param frame: frame to set up, in this case the login tab
        :return: none
        """
        # Create elements
        title = tk.Label(frame, text='Twitter')
        title.config(font=('arial', 25))

        consumer_key_label = tk.Label(
            frame, text='Enter Twitter consumer key:')
        consumer_key_entry = tk.Entry(frame)

        consumer_secret_label = tk.Label(
            frame, text='Enter Twitter consumer secret:')
        consumer_secret_entry = tk.Entry(frame, show="*")

        access_token_label = tk.Label(
            frame, text='Enter Twitter access token:')
        access_token_entry = tk.Entry(frame)

        access_token_secret_label = tk.Label(
            frame, text='Enter Twitter access token secret:')
        access_token_secret_entry = tk.Entry(frame, show="*")

        login_confirm_text = tk.StringVar()
        login_confirm_text.set('Waiting for login')

        login_confirmed_label = tk.Label(
            frame, textvariable=login_confirm_text)

        login_button = tk.Button(
            frame, text='Login to Twitter',
            command=lambda: twitter.set_twitter_login(
                consumer_key_entry.get(),
                consumer_secret_entry.get(),
                access_token_entry.get(),
                access_token_secret_entry.get(),
                login_confirm_text, twitter_state)
        )

        # Place elements
        title.grid(row=0, column=2, columnspan=2, sticky='W')

        consumer_key_label.grid(row=1, column=2, sticky='W')
        consumer_key_entry.grid(row=1, column=3, sticky='W')

        consumer_secret_label.grid(row=2, column=2, sticky='W')
        consumer_secret_entry.grid(row=2, column=3, sticky='W')

        access_token_label.grid(row=3, column=2, sticky='W')
        access_token_entry.grid(row=3, column=3, sticky='W')

        access_token_secret_label.grid(row=4, column=2, sticky='W')
        access_token_secret_entry.grid(row=4, column=3, sticky='W')

        login_button.grid(row=5, column=2, sticky='W')
        login_confirmed_label.grid(row=5, column=3, sticky='W')

        if 'login_info' in twitter_state:
            login_dict = twitter_state['login_info']
            twitter.set_twitter_login(login_dict['consumer_key'], login_dict['consumer_secret'],
                                      login_dict['access_token'], login_dict['access_token_secret'], login_confirm_text, twitter_state)
def build_twitter_login ( frame : tk . Frame ) : # Create elements title = tk . Label ( frame , text = 'Twitter' ) title . config ( font = ( 'arial' , 25 ) ) consumer_key_label = tk . Label ( frame , text = 'Enter Twitter consumer key:' ) consumer_key_entry = tk . Entry ( frame ) consumer_secret_label = tk . Label ( frame , text = 'Enter Twitter consumer secret:' ) consumer_secret_entry = tk . Entry ( frame , show = "*" ) access_token_label = tk . Label ( frame , text = 'Enter Twitter access token:' ) access_token_entry = tk . Entry ( frame ) access_token_secret_label = tk . Label ( frame , text = 'Enter Twitter access token secret:' ) access_token_secret_entry = tk . Entry ( frame , show = "*" ) login_confirm_text = tk . StringVar ( ) login_confirm_text . set ( 'Waiting for login' ) login_confirmed_label = tk . Label ( frame , textvariable = login_confirm_text ) login_button = tk . Button ( frame , text = 'Login to Twitter' , command = lambda : twitter . set_twitter_login ( consumer_key_entry . get ( ) , consumer_secret_entry . get ( ) , access_token_entry . get ( ) , access_token_secret_entry . get ( ) , login_confirm_text , twitter_state ) ) # Place elements title . grid ( row = 0 , column = 2 , columnspan = 2 , sticky = 'W' ) consumer_key_label . grid ( row = 1 , column = 2 , sticky = 'W' ) consumer_key_entry . grid ( row = 1 , column = 3 , sticky = 'W' ) consumer_secret_label . grid ( row = 2 , column = 2 , sticky = 'W' ) consumer_secret_entry . grid ( row = 2 , column = 3 , sticky = 'W' ) access_token_label . grid ( row = 3 , column = 2 , sticky = 'W' ) access_token_entry . grid ( row = 3 , column = 3 , sticky = 'W' ) access_token_secret_label . grid ( row = 4 , column = 2 , sticky = 'W' ) access_token_secret_entry . grid ( row = 4 , column = 3 , sticky = 'W' ) login_button . grid ( row = 5 , column = 2 , sticky = 'W' ) login_confirmed_label . grid ( row = 5 , column = 3 , sticky = 'W' ) if 'login_info' in twitter_state : login_dict = twitter_state [ 'login_info' ] twitter . set_twitter_login ( login_dict [ 'consumer_key' ] , login_dict [ 'consumer_secret' ] , login_dict [ 'access_token' ] , login_dict [ 'access_token_secret' ] , login_confirm_text , twitter_state )