2014-10-03 3 views
0

Я хочу получить таблицу, но когда я понял, что нет таблицы на python, я решил исправить ее двумя списками.Python: Listbox without border

Дело в том, что я не хочу границы между ними.

Так что мой вопрос: Как удалить границу из списка Tk Listbox в Python?

Даже если это станет белый у меня было решение ...

+0

Можете вы показать нам свой код? Кроме того, я не уверен, что вы подразумеваете под «нет таблицы в python»,? – leo

+1

@leo: Похоже, что ProgrammingDonkey хочет поместить таблицу HTML-стиля в свой графический интерфейс tkinter. –

+0

ПрограммированиеDonkey, [Tk] (http://en.wikipedia.org/wiki/Tk_%28software%29) - это лишь один из нескольких наборов инструментов GUI, которые можно использовать в Python. Это не относится к Python, и многие из нас даже не устанавливают его, и предпочитают использовать в наших программах более мощные системы, такие как GTK, Qt и т. Д. –

ответ

0

Speicfy borderwidth в 0 при создании ListBox.

Например:

from Tkinter import * # from tkinter import * (Python 3.x) 

root = Tk() 
lb = Listbox(borderwidth=0) # <--- 
lb.pack() 
root.mainloop() 
+0

Спасибо большое! – ProgrammingDonkey

+0

@ProgrammingDonkey, Добро пожаловать в переполнение стека! Есть люди, которые пытались ответить на ваш вопрос. Если бы это помогло вам, вы можете рассказать об этом сообществу, приняв ответ [http://meta.stackoverflow.com/a/5235], который был наиболее полезен для вас. – falsetru

1

Я думаю, что лучшее, что вы можете достичь бы это:

import tkinter as tk 

root = tk.Tk() 

wrapper = tk.Frame(root, bd=2, relief="sunken") 
L1 = tk.Listbox(wrapper, bd=0) 
L2 = tk.Listbox(wrapper, bd=0) 

L1.grid(column = 1, row = 1) 
L2.grid(column = 2, row = 1) 

wrapper.pack() 

root.mainloop() 

установка границы каждого ListBox в 0 примечание (шд = 0) и дать общий виджет аналогичного взгляда на исходный список я обернул его в фрейм и дал тот же стиль границы, что и список по умолчанию.

также не стоит ничего, что вам нужно, чтобы получить привязки, чтобы они прокручивались так, как ожидалось, просто привязка к колесу прокрутки и полосе прокрутки недостаточна, поскольку списки можно перемещать с помощью клавиш со стрелками, когда элемент выделен, например во втором примере на этой странице:
scrolling multiple listboxes together по Santiclause

+0

Большое вам спасибо! – ProgrammingDonkey

+0

нет проблем, если вы довольны этим, вы можете пометить его как ответ, и так же, как FYI, вы можете расширить этот метод, чтобы сделать больше 2 списков, и если вы собираетесь использовать его много в пределах приложение его хорошая идея для подкласса, так как это мешает вам вручную указать, как они связаны. –

2

вы хотите установить BorderWidth к нулю, но вы также хотите установить highlightthickness к нулю. Highlightthickness представляет собой прямоугольник, который окружает весь виджет, когда он имеет фокус клавиатуры. Наконец, когда вы используете пакет или сетку, убедитесь, что вы не добавляете никаких дополнений между ними.

Если вы хотите заполнить иллюзию, что два виджета - это один, поместите их в рамку и придайте раме границу и рельеф. Импорт Tkinter as tk

class Example(tk.Frame): 
    def __init__(self, parent): 
     tk.Frame.__init__(self, parent, borderwidth=1, relief="sunken") 

     lb1 = tk.Listbox(self, borderwidth=0, highlightthickness=0) 
     lb2 = tk.Listbox(self, borderwidth=0, highlightthickness=0) 

     lb1.pack(side="left", fill="both", expand=True) 
     lb2.pack(side="left", fill="both", expand=True) 

     lb1.insert(0, "left") 
     lb2.insert(0, "right") 

if __name__ == "__main__": 
    root = tk.Tk() 
    Example(root).pack(fill="both", expand=True, padx=8, pady=8) 
    root.mainloop()