tkinter - обновление обновления страницы / текста для использования нового возврата из функции - PullRequest
0 голосов
/ 01 декабря 2019

Я новичок в программировании и пытался заставить это работать.

ranlist () - это функция, которая возвращает случайный цвет из кортежа, содержащего цвета.

randisk ()является функцией, которая возвращает случайную форму из кортежа, содержащего фигуры.

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

Хотел бы нажать кнопку и получить новый случайный цвет и форму из ranlist () и randisk (), отображаемых на странице.

Как бы я мог это сделать?

спасибо, что нашли время прочитать это.

import tkinter as tk    
from tkinter import *
# python 3
from tkinter import font  as tkfont # python 3
import random

# containing tuple with shapes
from OneGeneralIncidentsList import GI
# containing tuple with color
from disklist import disk
#import Tkinter as tk     # python 2
#import tkFont as tkfont  # python 2

# return random shape from tuple
def ranlist():
    a=random.choice(GI)
    return a

# return random color from tuple
def randisk():
    a=random.choice(disk)
    return a



class SampleApp(tk.Tk):

    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)

        self.title_font = tkfont.Font(family='Helvetica', size=14, weight="bold", slant="italic")

        # the container is where we'll stack a bunch of frames
        # on top of each other, then the one we want visible
        # will be raised above the others
        container = tk.Frame(self)
        container.pack(side="top", fill="both", expand=True)
        container.grid_rowconfigure(0, weight=1)
        container.grid_columnconfigure(0, weight=1)

        self.frames = {}
        for F in (StartPage, PageOne, PageTwo):
            page_name = F.__name__
            frame = F(parent=container, controller=self)
            self.frames[page_name] = frame

            # put all of the pages in the same location;
            # the one on the top of the stacking order
            # will be the one that is visible.
            frame.grid(row=0, column=0, sticky="nsew")

        self.show_frame("StartPage")

    def show_frame(self, page_name):
        '''Show a frame for the given page name'''
        frame = self.frames[page_name]
        frame.tkraise()


class StartPage(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller
        label = tk.Label(self, text="Press Continue for random color and shape", font=controller.title_font)
        label.pack(side="top", fill="x", pady=10)

        button1 = tk.Button(self, text="Continue",
                            command=lambda: controller.show_frame("PageOne"))


class PageOne(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)

        v = tk.StringVar()
        var0 = "randon color: "
        var1 = ranlist()
        var2 = "\n"
        var3 = "random shape: "
        var4 = randisk()

        v.set(var0+var1+var2+var3+var4)

        self.controller = controller
        label = tk.Label(self, textvariable=v, font=controller.title_font)
        label.pack(side="top", fill="x", pady=10)


        button = tk.Button(self, text="Next",
                           command=lambda: controller.show_frame("PageTwo"))
        button.pack()


class PageTwo(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)

        v = tk.StringVar()
        var0 = "randon color: "
        var1 = ranlist()
        var2 = "\n"
        var3 = "random shape: "
        var4 = randisk()

        v.set(var0+var1+var2+var3+var4)


        self.controller = controller
        label = tk.Label(self, textvariable=v, font=controller.title_font)
        label.pack(side="top", fill="x", pady=10)
        button = tk.Button(self, text="Next",
                           command=lambda: controller.show_frame("PageOne"))
        button.pack()


if __name__ == "__main__":
    app = SampleApp()
    app.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...