如何擦除标签中的内容?

时间:2016-12-08 05:49:52

标签: python python-3.x user-interface tkinter labels

抱歉这个烂摊子

所以我正在制作座位表,我似乎无法让它正常工作......再次。每次按下运行按钮时,我都会尝试重置标签吗?

#commands: add name , Run

#imports
import random
from time import sleep
from tkinter import *

#Console and background Handlers
Tables = 6
Names = []

def AddNames():
    NewNames = e.get("1.0", 'end -1c')
    if NewNames in Names:
        print("Name Already exists")
    elif NewNames == "":
        print("Empty")
    else:
        Names.append(NewNames)
    print(Names)
    e.delete(1.0, END)

def Random():
    RandomNum = random.randrange(Tables)
    if RandomNum == 0:
        RandomNum = random.randrange(Tables)
    return RandomNum

def run():
    X = 0
    for i in Names:
        #print(Names[X])
        print("Table: " + str(Random()))
        X += 1
#text = Label(popup, text = "")
        text = Label(popup, text=  Names[X] + "\n" + "Table: " +     str(Random()))
        text.pack()

#GUI Handler
root = Tk()
root.geometry("1024x768")

e = Text(root, bd = 10, font=("Comic Sans MS", 50) ,width = 15, height = 2)
e.pack()

popup = Toplevel()
popup.title("Seating Chart")

AddNameButton = Button(root, text = ("Add Name"), width = 15, height = 5,     command = AddNames)
AddNameButton.pack()

RunButton = Button(root, text = ("Run"), width = 15, height = 5, command = run)
RunButton.pack()



root.mainloop()

每次用户按下运行按钮时,我都会尝试重置文本

1 个答案:

答案 0 :(得分:0)

import tkinter
from tkinter import ttk

import random

class MyApp:
    def __init__(self):
        self.root = tkinter.Tk()
        self.seatwindow = None

        self.root.title('Add Names')

        self.currentname = tkinter.StringVar()
        self._maxtables = tkinter.StringVar()
        self.addednames = []

        self.commandframe = ttk.Labelframe(self.root, text='Commands')

        self.nameentry = ttk.Entry(self.root, textvariable=self.currentname)
        self.addbutton = ttk.Button(self.root, text='Add Name', command=self.addname)
        self.maxtablabel = ttk.Label(self.root, text='Tables: ')
        self.maxtabentry = ttk.Entry(self.root, textvariable=self._maxtables)

        self.genbutton = ttk.Button(self.commandframe, text='Run', command=self.generate)
        self.resetbutton = ttk.Button(self.commandframe, text='Reset', command=self.reset)

        self._maxtables.set('6')

        self.nameentry.grid(row=0, column=0)
        self.addbutton.grid(row=0, column=1, sticky='nsew')
        self.maxtabentry.grid(row=1, column=1, sticky='nsw')
        self.maxtablabel.grid(row=1, column=0, sticky='nse')

        self.genbutton.grid(row=0, column=0, sticky='nsew')
        self.resetbutton.grid(row=0, column=1, sticky='nsew')

        self.commandframe.grid(row=2, column=0, columnspan=2, sticky='nsew')

        self.nameentry.bind('<Return>', self.addname)
        self.root.bind('<Control-Return>', self.generate)

    def addname(self, event=None):
        name = self.currentname.get()
        if not(name == '' or name in self.addednames):
            self.addednames.append(name)
            self.currentname.set('')
        else:
            self.currentname.set('Name already added!')

    def generate(self, event=None):
        if not self.seatwindow == None:
            self.seatwindow.destroy()
        self.currentname.set('')
        self.seatwindow = tkinter.Toplevel()

        random.shuffle(self.addednames)
        tables = []
        for i in range(self.maxtables):
            tableframe = ttk.Labelframe(self.seatwindow, text='Table ' + str(i + 1) + ':')
            tableframe.grid(column=i, row=0, sticky='nsew')
            tables.append(tableframe)
        for index, name in enumerate(self.addednames):
            namelabel = ttk.Label(tables[index%self.maxtables], text=name)
            namelabel.grid(column=0, row=index//self.maxtables + 1)

    def reset(self):
        self.currentname.set('')
        self.maxtables = 6
        self.addednames = []

    def run(self):
        self.root.mainloop()

    @property
    def maxtables(self):
        return int(self._maxtables.get())

MyApp().run()