如何在python 2.7中输出单个数字作为两位数

时间:2014-02-19 10:38:12

标签: python python-2.7 tkinter

我刚刚开始使用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()

2 个答案:

答案 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)