2016-12-08 4 views
0

Извините за беспорядокКак я могу удалить содержимое в ярлыке?

поэтому я делаю сидения, и я не могу заставить его работать правильно ... снова. Я пытаюсь сделать сброс метки каждый раз, когда я нажимаю кнопку запуска, любые идеи?

#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() 

Я пытаюсь сбросить тексту каждый раз, когда пользователь нажимает кнопку запуска

+0

Вы хотите, чтобы запустить функцию, чтобы удалить только содержимое или он делает что-то другое тоже? –

+0

Функция функции запуска назначает разные имена числу. – PinkChicken

+0

Вы уже сделали это в методе 'AddNames()'. – Zety

ответ

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() 
+0

его не текст, который я хочу очистить, его ярлык (называемый текстом). e.delete (1.0, END) только очищает текст, в который пользователь вводит имена. возможно, если вы запустили его на своем компьютере (f доступно), вы увидите, мой код очень грязный XD. – PinkChicken

+0

Может быть, я могу создать новую кнопку сброса, которая сбрасывает текст, но я не знаю, что добавить в функцию. – PinkChicken

+0

Положите код более чистого кода, если это поможет, дайте мне знать, иначе я смогу справиться с проблемой, используя только ваш код , –

Смежные вопросы