Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000
1

Почему не растягивается форма?

27.04.2019, 13:50. Показов 2918. Ответов 20

Author24 — интернет-сервис помощи студентам
Здравствуйте. Мне заказчик прислал проект где форма, она создается через tkinter и называется root. Проблема в том, что у заказчика она растягивается и там справа появляются кнопки и другие элементы управления, у меня же из-за того, что форма не растягивается я просто не вижу этих компонентов и не могу растянуть форму, она как-бы ограничивается каким-то значением, т.е. ее меньше можно сделать, а больше нельзя.
В чем причина и как ее решить?

Добавлено через 30 минут
Эту проблему решил. Как теперь в ListBox добавить символ "\t" или его аналог в строку с текстом, которая потом помещается в ListBox?

Добавлено через 1 час 11 минут
Как сделать шрифт "Courier" - "Моноширинный" в Listbox-e?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.04.2019, 13:50
Ответы с готовыми решениями:

При запуске форма растягивается во всю ширину
При редактировании проекта форма имеет размеры 200х500, но при запуске программы растягивается во...

Форма не растягивается больше чем на 20490 на 11520
Как растянуть визуально а не программно скроллом ? Это реально ?

Форма растягивается на весь экран, как задать фиксированный размер?
autoresize -no :gscratch:

Почему TextBox не растягивается?
Подскажите пожалуйста почему TextBox упорно не хочет растягиваться? <DockPanel...

20
1287 / 672 / 365
Регистрация: 07.01.2019
Сообщений: 2,251
27.04.2019, 15:02 2
Цитата Сообщение от FFPowerMan Посмотреть сообщение
Как сделать шрифт "Courier" - "Моноширинный" в Listbox-e?
есть tkinter.font, можно переменной задать шрифт и при создании виджета передать этот шрифт font=
0
2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000
27.04.2019, 15:53  [ТС] 3
Эту проблему решил. Как теперь добавить горизонтальную полосу прокрутки к Listbox?
0
1287 / 672 / 365
Регистрация: 07.01.2019
Сообщений: 2,251
27.04.2019, 16:02 4
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from tkinter import *
 
window = Tk()
window.geometry("680x500")
 
Label(window, text="Top label").pack()
 
frame = Frame(window)
frame.pack()
 
listNodes = Listbox(frame, width=20, height=20, font=("Helvetica", 12))
listNodes.pack(side="left", fill="y")
 
scrollbar = Scrollbar(frame, orient="vertical")
scrollbar.config(command=listNodes.yview)
scrollbar.pack(side="right", fill="y")
 
listNodes.config(yscrollcommand=scrollbar.set)
 
for x in range(100):
    listNodes.insert(END, str(x))
 
Label(window, text="Bottom label").pack()
 
window.mainloop()
0
2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000
27.04.2019, 16:08  [ТС] 5
Это обязательно через Frame делать? Без фрейма можно?

Добавлено через 1 минуту
У меня щас ScrollBar внизу формы.
0
1287 / 672 / 365
Регистрация: 07.01.2019
Сообщений: 2,251
27.04.2019, 16:13 6
Можно и без фрейма, главное чтобы scrollbar был справа от ListBox
0
2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000
27.04.2019, 16:31  [ТС] 7
У Вас вертикальная полоса ScrollBar. Для горизонтальной напишите, пожалуйста, что-то ничего у меня не получается. ScrollBar вечно прыгает по всей форме, но никак не на своем месте.
0
1287 / 672 / 365
Регистрация: 07.01.2019
Сообщений: 2,251
27.04.2019, 16:42 8
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from tkinter import *
 
window = Tk()
window.geometry("680x500")
 
Label(window, text="Top label").pack()
 
frame = Frame(window)
frame.pack()
 
listNodes = Listbox(frame, width=20, height=20, font=("Helvetica", 12))
listNodes.pack(side="top", fill="y")
 
scrollbar = Scrollbar(frame, orient="horizontal")
scrollbar.config(command=listNodes.xview)
scrollbar.pack(side="bottom", fill="x")
 
listNodes.config(xscrollcommand=scrollbar.set)
 
lst = ['x', 'y', 'z']
for x in lst:
    listNodes.insert(END, ''.join([x * 30]))
 
Label(window, text="Bottom label").pack()
 
window.mainloop()
0
2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000
27.04.2019, 16:43  [ТС] 9
Почему вот так получается?
Все вроде правильно делаю - они прыгают туда-сюда.
Изображения
 
0
1287 / 672 / 365
Регистрация: 07.01.2019
Сообщений: 2,251
27.04.2019, 16:47 10
Как они позиционируются на форме?
0
2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000
27.04.2019, 16:52  [ТС] 11
Вот код. Что не так?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
root = Tk()
root.title("Товарный лист")
root.geometry('1600x600')
CreateButton(root, "Открыть файл с данными", 215, 30, 800, 6, LoadEventProc)  #1080
 
frame = LabelFrame(root, text="Верх")
frame.pack()
 
ListBoxControl = CreateListBox(frame, 700, 500, 10, 6)
 
 
ListBoxControl.pack(side = "top", fill = "y")
 
 
ListBoxControl.config(font = 'Courier')
 
scrollbar = Scrollbar(frame, orient = HORIZONTAL, command = ListBoxControl.xview)
 
 
scrollbar.pack(side = "top", fill = "x")
 
 
ListBoxControl.config(xscrollcommand = scrollbar.set)
scrollbar.config(command = ListBoxControl.xview)
При этом коде они как на картинке выше.
Что не так? Как исправить проблему?
0
1287 / 672 / 365
Регистрация: 07.01.2019
Сообщений: 2,251
27.04.2019, 16:59 12
У вас оба виджета упакованы в top, у одного должно быть bottom
Python
1
2
ListBoxControl.pack(side = "top", fill = "y")
scrollbar.pack(side = "top", fill = "x")
0
2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000
27.04.2019, 17:10  [ТС] 13
Сейчас вот так.
Суть в том, что когда я не ставлю команду ListBoxControl.pack(side = "top", fill = "y") для ListBox-a, т.е. когда я комментирую ее, то ListBox раскрывается как надо - по координатам, а когда пишу ListBoxControl.pack(side = "top", fill = "y"), т.е. раскомментирую его, то ListBox съеживается становится узки и вылетает наверх, как на 2-ух картинках выше.
Как сделать чтобы все по-нормальному было?
ScollBar постоянно зависает внизу формы по всей ширине.
Вот это тоже неплохо-бы исправить. Еще ниразу не видел ScrollBar вплотную к ListBox-у снизу.
Вот это как все сделать по-нормальному?
Миниатюры
Почему не растягивается форма?  
0
1287 / 672 / 365
Регистрация: 07.01.2019
Сообщений: 2,251
27.04.2019, 17:20 14
Для ListBox нужно сделать ListBoxControl.pack(side = "top", fill = "both")

Создаете Frame,
frame = LabelFrame(root)
потом создаете ListBox и scrollbar и у них родительским элементом указываете фрейм
ListBoxControl = ListBox(frame, ....)
scrollbar = Scrollbar(frame, ....)

у остальных виджетов на форме, родительский элемент должен быть другой, не frame, root или другой фрейм, затем фрейм располагаете на форме как надо
0
2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000
27.04.2019, 17:30  [ТС] 15
Цитата Сообщение от tooru Посмотреть сообщение
затем фрейм располагаете на форме как надо
- что это значит? Задать ему координаты? Ширину и высоту? Напишите код, пожалуйста.
И это нужно делать после создания всех лэйблов и полей редактирования справа?
0
2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000
27.04.2019, 17:33  [ТС] 16
Почему-то ListBox никак не залазиит в frame. Сегодня я еще ниразу не видел, чтобы он был во фрейме.
В чем причина и как исправить?
Миниатюры
Почему не растягивается форма?  
0
1287 / 672 / 365
Регистрация: 07.01.2019
Сообщений: 2,251
27.04.2019, 17:45 17
Вот тут с двумя фреймами

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from tkinter import *
 
window = Tk()
window.geometry("680x500")
 
lframe = Frame(window)
lframe.pack(side='right', fill="both")
Label(lframe, text="Top label").pack()
Label(lframe, text="Bottom label").pack(side="bottom")
 
frame = Frame(window)
frame.pack(fill="both")
 
listNodes = Listbox(frame, width=20, height=25, font=("Helvetica", 12))
listNodes.pack(side="top", fill="x")
 
scrollbar = Scrollbar(frame, orient="horizontal")
scrollbar.config(command=listNodes.xview)
scrollbar.pack(side="bottom", fill="x")
 
listNodes.config(xscrollcommand=scrollbar.set)
 
lst = ['x', 'y', 'z']
for x in lst:
    listNodes.insert(END, ''.join([x * 400]))
0
2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000
27.04.2019, 17:54  [ТС] 18
Нет, со вторым фреймом еще гораздо хуже. Давайте с 1-им фреймом и root.

Добавлено через 23 секунды
Щас картинка как в 13 сообщении.

Добавлено через 2 минуты
Почему ListBox не создается во фрейме? Ведь я указываю фрейм:
Python
1
2
3
4
5
frame = LabelFrame(root, text="Верх")
frame.pack(side = "top", fill="y")
 
ListBoxControl = CreateListBox(frame, 700, 500, 10, 6)
ListBoxControl.pack(side = "top", fill = "y")
0
1287 / 672 / 365
Регистрация: 07.01.2019
Сообщений: 2,251
27.04.2019, 17:58 19
Python
1
2
frame.pack(side = "top", fill="both")
ListBoxControl.pack(side = "top", fill = "both")
0
2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000
27.04.2019, 18:16  [ТС] 20
Получается как на картинке в 16 сообщении.

Добавлено через 9 минут
Почему так плохо работает размещение? Компоненты справа мешают что-ли?
0
27.04.2019, 18:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.04.2019, 18:16
Помогаю со студенческими работами здесь

Почему сайт растягивается?
Как сделать чтобы сайт во всех расширениях монитора был одинаковый не растягивался? Спасибо. ...

Почему TextBox не растягивается?
Пытаюсь сделать приятную масштабируемую компоновку,но не могу понять почему текстбокс не...

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

Почему div не растягивается на всю страницу?
Здраствуйте, мне нужно футер разтянуть на всю страницу, когда браузер открыт на весь экран, то всё...

Почему изображение растягивается на дейвайсах Apple
У меня есть img вокруг которого стоят ннесколько дивов. Все выглядит прекрасно на Windows и на...

Почему не растягивается ul на высоту вложенных элементов
Добрый день. Подскажите где косяк: http://jsfiddle.net/nFJ98/5/ <div id="top_menu"> <ul> ...

Почему ссылка растягивается на всю ширину?
Привет. Почему-то ссылка form_link растягивается на всю ширину и никак не хочет становиться...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru