Python размещение элементов сетки на ноутбуке - PullRequest
0 голосов
/ 16 февраля 2019

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

Заранее спасибо

from tkinter import *
from tkinter import ttk


main = Tk()
main.title("Deploy")
main.geometry("1250x900")

rows = 0
while rows < 50:
    main.rowconfigure(rows,weight=1)
    main.columnconfigure(rows,weight=1)
    rows += 1


nb = ttk.Notebook(main)
nb.grid(row=1, column=0, columnspan=50, rowspan=49, sticky='NESW')

page1=ttk.Frame(nb)
nb.add(page1,text='Tab1')
page2=ttk.Frame(nb)
nb.add(page2,text='Tab2')
page3=ttk.Frame(nb)
nb.add(page3,text='Tab3',state="disabled")
page4=ttk.Frame(nb)
nb.add(page4,text='Tab4',state="disabled")
page5=ttk.Frame(nb)
nb.add(page5,text='tab5',state="disabled")

labelL1 = ttk.Label(page1, text="User name:")
labelL1.grid(row=10, column=10,sticky='WE', columnspan=3)


main.mainloop()

1 Ответ

0 голосов
/ 16 февраля 2019

Вы хотите разместить виджет в строке 10, столбце 10 в сетке, но проблема здесь в том, что, так как предыдущие столбцы и строки в сетке пусты, они не занимают никакого пространства.

Чтобы добиться позиционирования, можно задать минимальный размер строк и столбцов, чтобы они занимали место, даже если они пустые, например:

from tkinter import *
from tkinter import ttk


main = Tk()
main.title("Deploy")
main.geometry("1250x900")

rows = 0
while rows < 50:
    main.rowconfigure(rows, weight=1)
    main.columnconfigure(rows, weight=1)
    rows += 1


nb = ttk.Notebook(main)
nb.grid(row=1, column=0, columnspan=50, rowspan=49, sticky='NESW')

page1=ttk.Frame(nb)
nb.add(page1, text='Tab1')
page2=ttk.Frame(nb)
nb.add(page2, text='Tab2')
page3=ttk.Frame(nb)
nb.add(page3, text='Tab3', state="disabled")
page4=ttk.Frame(nb)
nb.add(page4, text='Tab4', state="disabled")
page5=ttk.Frame(nb)
nb.add(page5, text='tab5', state="disabled")

labelL1 = ttk.Label(page1, text="User name:")

# add this to give a min size to empty rows
rows = 0
while rows < 10:
    page1.rowconfigure(rows,weight=1, minsize=1)
    page1.columnconfigure(rows, weight=1, minsize=1)
    #ttk.Label(page1, text="-").grid(row=rows, column=0)
    rows += 1

labelL1.grid(row=10, column=10, sticky='WE', columnspan=3)


main.mainloop()

Но, возможно, другое решение будет более соответствовать gridконцепция, например, с использованием padx, padx options

Аналогичный вопрос: Параметры интервала Tkinter.grid?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...