Я не могу вызвать случайную функцию при нажатии данной кнопки в Tkinter - PullRequest
0 голосов
/ 13 апреля 2019

Я делаю кнопку, которая будет отображать сообщение в модуле tkinter в Python.

Сначала на кнопке есть текст. При щелчке на нем отобразится окно сообщения. Окно сообщения - это «всплывающее окно» или «сообщение об ошибке».

В приведенном ниже коде будет показан пример функции, которая выполняет приведенное выше предложение.

def joke1():
    messagebox.showinfo(title = "There are three types of people in this world", message = "Those who can count and those who can't.")

root = Tk()
root.title("Joke Board 1.0 by Jamlandia")
root.iconbitmap(r"C:\Users\VMWZh\Downloads\Icons8-Ios7-Messaging-Lol.ico")
button = Button(text = "There are three types of people in this world", bg = '#42f474', fg = 'black', command = joke1)
test = Button()

button.grid(column = 0, row = 0)

test.grid(column = 1, row = 0)
root.mainloop()

Я не могу придумать способ приблизиться к кодированию, чтобы при нажатии на кнопку запускалась функция, соответствующая шутке, отображаемой на кнопке, а затем случайным образом привязываться к новой функции и тексту перейти на шутку, которая связана с этой функцией.

1 Ответ

0 голосов
/ 14 апреля 2019

Вопрос : нажмите кнопку, ... случайно ... перейдите на шутку

tkinter - интерфейс Python для Tcl / Tk

Учебник по Python и модуль Python


Показать в случайном порядке Joke при Button щелчке, без messagbox.

import tkinter as tk
import random

class App(tk.Tk):
    def __init__(self):
        super().__init__()

        self.joke_index = 0
        self.jokes = [("There are three types of people in this world", "Those who can count and those who can't."),
                      ('Grew up with six brothers', 'That’s how I learned to dance–waiting for the bathroom'),
                      ('Always borrow money from a pessimist.', 'He won’t expect it back.')
                      ]

        self.label1 = tk.Label(self)
        self.label1.grid(row=0, column=0, pady=3)

        self.label2 = tk.Label(self)
        self.label2.grid(row=1, column=0, pady=3)

        button = tk.Button(self,
                           text='Show next Joke',
                           command=self.show_random_joke,
                           bg='#42f474', fg='black'
                           )
        button.grid(row=2, column=0, pady=3)

    def show_random_joke(self):
        v = -1
        while v == self.joke_index:
            v = random.randrange(0, len(self.jokes)-1)
        self.joke_index = v

        self.label1['text'], self.label2['text'] = self.jokes[self.joke_index]

if __name__ == "__main__":
    App().mainloop()

Протестировано на Python: 3,5

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...