from tkinter import *
import random as r
from collections import Counter
root = Tk()
root.title("Simple Mafs")
root.geometry("600x400")
root.resizable(False, False)
def open_gn():
gn_wn = Tk()
gn_wn.title("Simple Mafs - Generate a number")
gn_wn.geometry("600x400")
gn_wn.resizable(False, False)
Label(gn_wn, text=' ').grid(row=0, column=0)
inst_gn = Label(gn_wn, text='Enter a minimum and maximum value(below 100)')
inst_gn.config(font=("Yu Gothic UI", 12))
inst_gn.grid(row=0, column=1)
Label(gn_wn, text=" Enter a minimum value: ").place(x=295, y=100)
entry_min = Entry(gn_wn)
entry_min.insert(0, "0")
entry_min.place(x=450, y=100)
Label(gn_wn, text=" Enter a maximum value: ").place(x=295, y=200)
entry_max = Entry(gn_wn)
entry_max.insert(0, "99")
entry_max.place(x=450, y=200)
Label(gn_wn, text="Random value is: ").place(x=40, y=40)
def generate_number():
min_ = int(entry_min.get())
max_ = int(entry_max.get())
random_num = r.randint(min_, max_)
d_rn = Label(gn_wn, text=random_num)
d_rn.config(text=random_num, font=("Yu Gothic UI", 30))
d_rn.place(x=40, y=100)
Button(gn_wn, text="Generate", padx=220, pady=25, command=generate_number).place(x=25, y=280)
gn_wn.mainloop()
def open_coin():
c_wn = Tk()
c_wn.title("Simple Mafs - Flip a Coin")
c_wn.geometry("600x400")
c_wn.resizable(False, False)
Label(c_wn, text=" ").grid(row=0,
column=0)
Label(c_wn, text="Flip the coin below!", font=("Yu Gothic UI", 12)).grid(row=0, column=1)
Label(c_wn, text=' ').grid(row=1, column=1)
coin_label = Label(c_wn, text="")
coin_label.place(relx=0.5, rely=0.2, anchor='s')
def flip():
coin_values = ["Heads", "Tails"]
coin_face = r.choice(coin_values)
if coin_face == "Heads":
coin_label.config(text="Coin: Heads")
else:
coin_label.config(text="Coin: Tails")
coin = Button(c_wn, text='coin', padx=100, pady=90, command=flip)
coin.place(relx=0.5, rely=0.5, anchor=CENTER)
c_wn.mainloop()
def open_average():
avg_wn = Tk()
avg_wn.title("Simple Mafs - Averages")
avg_wn.geometry("840x300")
Label(avg_wn, text=" ").grid(row=0, column=0)
avg_instruct = Label(avg_wn, text="Enter your values below to get the averages in mean, median, and mode(put a "
"space between commas")
avg_instruct.config(font=("Yu Gothic UI", 10))
avg_instruct.grid(row=0, column=1)
Label(avg_wn, text=" ").grid(row=1, column=0)
entry = Entry(avg_wn)
entry.grid(row=2, column=1)
def calculate():
list_data = entry.get().split(', ')
list_data = [float(i) for i in list_data]
mean = sum(list_data) / len(list_data)
Label(avg_wn, text='Mean').grid(row=5, column=0)
Label(avg_wn, text=str(mean)).grid(row=6, column=0)
list_data_len = len(list_data)
list_data.sort()
if list_data_len % 2 == 0:
median1 = list_data[list_data_len // 2]
median2 = list_data[list_data_len // 2 - 1]
median = (median1 + median2) / 2
else:
median = list_data[list_data_len // 2]
Label(avg_wn, text='Median: ').grid(row=5, column=1)
Label(avg_wn, text=median).grid(row=6, column=1)
list_data_for_mode = Counter(list_data)
get_mode = dict(list_data_for_mode)
mode = [k for k, v in get_mode.items() if v == max(list(list_data_for_mode.values()))]
if len(mode) == list_data_len:
get_mode = ["No mode found"]
else:
get_mode = [str(i) for i in mode]
Label(avg_wn, text="Mode: ").grid(row=5, column=2)
Label(avg_wn, text=get_mode[0]).grid(row=6, column=2)
Label(avg_wn, text=" ").grid(row=3, column=0)
Button(avg_wn, text='Enter', command=calculate).grid(row=4, column=1)
def rand_stat():
pass
Label(root, text=" ").grid(row=0, column=0)
title = Label(root, text="Welcome to Simple Mafs")
title.config(font=("Yu Gothic UI", 24))
title.grid(row=0, column=1)
button1 = Button(root, text="Generate a random number", padx=80, pady=25, command=open_gn)
button1.place(x=2.25, y=100)
button2 = Button(root, text="Calculate mean, mode, median, and range", padx=20, pady=25, command=open_average)
button2.place(x=325, y=100)
button3 = Button(root, text="Flip a Coin", padx=125, pady=25, command=open_coin)
button3.place(x=2.25, y=200)
button4 = Button(root, text="Calculator", padx=105, pady=25, command=rand_stat)
button4.place(x=325, y=200)
root.mainloop()
문제가 있는 곳이기 때문에 open_gn()으로 건너뛰십시오. 통계/랜덤 관련 작업을 할 수 있는 앱을 만들고 그 안에 난수를 생성할 수 있는 앱을 만들고 싶습니다. 앱에서 번호를 생성하지만 이전 값은 그대로 유지되어 생성되는 현재 번호를 방해합니다.
실행될 때마다 새 레이블 을 만들고 이전 레이블을 오버레이할 동일한 위치에 새 레이블을 배치합니다.generate_number()
함수 외부에서 레이블을 한 번 생성하고 함수 내부에서 텍스트를 업데이트하기만 하면 됩니다.
def open_gn():
...
Label(gn_wn, text="Random value is: ").place(x=40, y=40)
# create label for generated random number
d_rn = Label(gn_wn, font=("Yu Gothic UI", 30))
d_rn.place(x=40, y=100)
def generate_number():
min_ = int(entry_min.get())
max_ = int(entry_max.get())
random_num = r.randint(min_, max_)
d_rn.config(text=random_num) # update label
...
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다