Я новичок в программировании и пытался заставить это работать.
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()