Решил поиграться с Python + Tk, но что-то буксую на правильной упаковке виджетов. Код ниже.
После запуска приложение выглядит так. Что сразу анноит:
- Центрирование Label+Entry происходит по вертикали. Хочу чтобы каждая пара Label+Entry была «прижата» к верху и чтобы между парами не было таких огромных пустых пространств.
- При растягивании окна получается вот такая фигня. Как сделать хотя бы «резиновую» упаковку, чтобы размеры виджетов также увеличивались пропорционально (а-ля Qt, при помещении в layout'ы) и не было этих некрасивых пустых пробелов до границ окна?
- При уменьшении размеров окна получается вот такое. Как запретить, чтобы виджеты «не терялись» при ресайзе, кроме как делать fixed size окна?
Продолжаю читать документацию по Tkinter, буду благодарен если не только ткнёте носом в ошибку, но еще и объясните немного :). Спасибо.
#!/usr/bin/env python
import Tkinter as Tk
def main():
root = Tk.Tk()
root.title("Python::Tk test")
fr1 = Tk.Frame(root)
l1 = Tk.Label(fr1, text = "Label 1")
e1 = Tk.Entry(fr1)
l1.pack(side = Tk.LEFT)
e1.pack(side = Tk.LEFT)
fr1.grid(row = 0, column = 0, columnspan = 2, padx = 10)
fr2 = Tk.Frame(root)
l2 = Tk.Label(fr2, text = "Label 2")
e2 = Tk.Entry(fr2)
l2.pack(side = Tk.LEFT)
e2.pack(side = Tk.LEFT)
fr2.grid(row = 1, column = 0, columnspan = 2, padx = 10)
fr3 = Tk.Frame(root)
l3 = Tk.Label(fr3, text = "Label 3")
e3 = Tk.Entry(fr3)
l3.pack(side = Tk.LEFT)
e3.pack(side = Tk.LEFT)
fr3.grid(row = 2, column = 0, columnspan = 2, padx = 10)
quit = Tk.Button(root, text = "Quit")
quit.grid(row = 5, column = 0, sticky = Tk.W + Tk.S)
blah = Tk.Button(root, text = "Blah!")
blah.grid(row = 5, column = 2, sticky = Tk.E + Tk.S)
canvas = Tk.Canvas(root, width = 500, height = 500, bg = "white")
canvas.grid(row = 0, column = 3, columnspan = 4, rowspan = 4)
root.mainloop()
if "__main__" == __name__:
main()