我刚刚开始使用python并决定为我的乐透号码制作一个随机数字生成器,到目前为止它非常好用,甚至可以在Tkinter中使用它。
但我似乎无法弄清楚输出格式的位置和方式,以便显示一些格式良好的列表行。
非常感谢任何帮助或建议。
雨果
到目前为止我在python 2.7中运行的脚本
import random
from Tkinter import *
import Tkinter as ttk
def f():
my_list = []
while len(my_list) < 6:
new_number = random.randrange(45) + 1
if new_number in my_list:
continue
my_list.append(new_number)
winners = sorted(my_list)
if len(my_list) == 6:
return winners
def genereer(*args):
x = int(getal.get())
my_list2 = []
if x < 11:
while len(my_list2) < x:
f()
my_list2.append(f())
for item in my_list2:
ttk.Label(mainframe, text=item).grid(column=0, sticky=W)
root = Tk()
root.title("Lotto nummers generator.")
mainframe = ttk.Frame(root)
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
mainframe.columnconfigure(1, weight=1)
mainframe.rowconfigure(1, weight=1)
getal = StringVar()
ttk.Label(mainframe,
text="Hoeveel rijtjes will je spelen? (max 10)").grid(column=0, row=1,sticky=W)
getal_entry = ttk.Entry(mainframe, width=3, textvariable=getal)
getal_entry.grid(column=1, row=1, sticky=W)
ttk.Button(mainframe, text="Genereer", command=genereer).grid(column=3,
row=1, sticky=W)
getal_entry.focus()
root.bind("<Return>", genereer)
root.mainloop()
答案 0 :(得分:1)
我从未使用TKinter,但我尝试过这样:
...
MAX_VALUE = 46
NUMS_PER_SAMPLE = 6
POOL = range(1, MAX_VALUE+1)
def f():
return sorted(random.sample(POOL, NUMS_PER_SAMPLE))
def genereer(*args):
x = int(getal.get())
if x > 10:
return
for x in range(x):
for i, item in enumerate(f()):
ttk.Label(mainframe, text=item).grid(row=x+2, column=i, sticky=E)
...
它并不完美,因为它使用与初始标签和按钮相同的网格,但从那时起,您应该能够根据需要进行调整。我还利用标准库简化了您的代码(random.sample
是您的朋友)。
答案 1 :(得分:0)
您应该应用以下代码:
for item in my_list2:
text = map(lambda x: '%02d'%(x,), item)
ttk.Label(mainframe, text=text).grid(column=0, sticky=W)