2015-05-04 2 views
0

Я создаю создателя сеттинга, который в основном позволит кому-то скопировать заголовок из библиотеки в сет-лист. Когда я помещаю все в сетку, по какой-то причине текстовая область и listbox странно набрасывают кнопки и поле ввода, хотя я проверил строки и столбцы, чтобы убедиться, что они не перекрываются. Должен ли я использовать фреймы или что-то еще? Если это связано с кадрами, как мне это сделать?Listbox/text entry, влияющий на макет сетки tkinter

from Tkinter import * 

class Application(Frame): 

    def __init__(self, master): 
     Frame.__init__(self, master) 
     self.grid() 
     self.create_widgets() 

    def create_widgets(self): 

     self.SetList_Label = Label(self, text = "Set List") 
     self.SetList_Label.grid(row = 0, column = 0, padx = 5, pady = 5, sticky = W) 

     self.SetList_Box = Text(width = 15, height = 10) 
     self.SetList_Box.grid(row = 1, column = 0, rowspan = 9, columnspan = 4, padx = 5, sticky = W) 

     self.empty = Label(self, text = "           ") 
     self.empty.grid(row = 0, column = 1, columnspan = 4) 

     self.Library_Label = Label(self, text = "Library") 
     self.Library_Label.grid(row = 0, column = 5, padx = 5, sticky = W) 

     self.Library_List = Listbox(self) 
     self.Library_List.insert(1, "Dooley") 
     self.Library_List.insert(2, "Icky Wicky") 
     self.Library_List.insert(3, "Pig in a Pen") 
     self.Library_List.insert(4, "In the Highways") 
     self.Library_List.insert(5, "Bile 'Em Cabbage") 
     self.Library_List.insert(6, "I'll Fly Away") 
     self.Library_List.grid(row = 1, column = 5, sticky = W) 

     self.addto_setlist = Button(self, text = "Add To Setlist", command = self.get_title) 
     self.addto_setlist.grid(row = 12, column = 0, padx = 5, sticky = W) 

     self.addto_library = Button(self, text = "Add To Library", command = self.add_item) 
     self.addto_library.grid(row = 12, column = 6, sticky = W) 

     self.addtitle_box = Entry() 
     self.addtitle_box.grid(row = 12, column = 5, sticky = W) 

     self.delete_button = Button(self, text = "Delete Title", command = self.delete_item) 
     self.delete_button.grid(row = 12, column = 7, padx = 5, sticky = W) 

    def add_item(self): 
     self.Library_List.insert (END, self.addtitle_box.get()) 

    def delete_item(self): 
     try: 
      index = self.Library_List.curselection()[0] 
      self.Library_List.delete(index) 
     except IndexError: 
      pass 

    def get_title(self): 
     index = self.Library_List.curselection()[0] 
     seltext = self.Library_List.get(index) 
     self.SetList_Box.insert(END, "\n" + seltext) 

root = Tk() 
root.title("SetList Creator") 
root.geometry("500x600") 

app = Application (root) 

root.mainloop() 

ответ

0

Используйте ширину = параметр размера виджетов (одинаковые для всех виджетов, но будет меняться с разными шрифтами) http://effbot.org/tkinterbook/listbox.htmhttp://effbot.org/tkinterbook/label.htm, как ваши книги BTW.

import Tkinter as tk 

master=tk.Tk() 
tk.Label(master, text="default width", 
     bg="lightblue").grid() 
tk.Label(master, text="width=25", width=25, 
     bg="yellow").grid(row=1) 
tk.Label(master, text="width=25", width=25, bg="yellow", 
     font=("Helvetica", 15)).grid(row=2) 
tk.Label(master, text="width=50", width=50, 
     bg="orange").grid(row=3) 
tk.Button(master, text="Quit", command=master.quit).grid(row=4) 

master.mainloop() 
+0

Это происходит сегодня вечером, поэтому я получил разочарование и переключился на использование метода и рамок пакета, и это сработало хорошо. И я бы хотел, чтобы я его БЫЛ! Ха-ха просто огромный фанат :) – IsaacAsimov

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