Tkinter tk.Scrollbar Сетка и вопросы выравнивания - PullRequest
0 голосов
/ 16 июня 2019

Я создал текстовое поле в Tkinter, новые элементы добавлены рядом с текстовым полем, и я не могу получить нижнюю строку с сеткой.окно не открывается при добавлении сетки.Какое решение?

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import tkinter as tk

pencere = tk.Tk()

frame = tk.Frame(pencere)
frame.pack()

scrol = tk.Scrollbar(frame)
scrol.pack(side=tk.RIGHT, fill=tk.Y)

text = "Good bye"

text = tk.Text(frame,width=70, height=0)
text.insert(tk.INSERT, text)
text.config(yscrollcommand=scrol.set)
scrol.config(command=text.yview)
text.pack(side=tk.LEFT, fill=tk.Y)

buton = tk.Button(frame, text='close', command=pencere.destroy)
buton.pack()

text.grid(row=1, column=1)

pencere.mainloop()

Ответы [ 2 ]

2 голосов
/ 16 июня 2019

Вы не можете использовать методы pack и grid для виджетов, имеющих один и тот же мастер. В этом примере ваш фрейм, текст и прокрутка уже настроены на pack , поэтому tkinter не позволяет корректировать текст или другой элемент с grid , пока вы не создадите другой рамка для элемента, который вы хотите настроить с помощью grid .

Итак, на мой взгляд, есть два варианта:

  1. Если вы все еще хотите использовать grid , вы должны настроить целые виджеты (фрейм, текст и т. Д.) С помощью сетки.
    1. Если вы хотите использовать grid , но не хотите изменять виджеты, которые уже отрегулированы пакетом, создайте новый фрейм для вашего текста.
1 голос
/ 17 июня 2019

Уважаемый Золо Баба, панель не может появиться, потому что вы все еще используете «колоду» и «сетку» вместе.По причинам, которые я упомянул выше, мы можем использовать только один метод управления макетом для мастера.Я редактировал ваш код, используя только метод "grid".

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import tkinter as tk

pencere = tk.Tk()

frame = tk.Frame(pencere)
frame.grid()

scrol = tk.Scrollbar(frame, orient = tk.VERTICAL)
text = tk.Text(frame,width=70, height=5)

text.insert(tk.INSERT, "###\n\n\nNote\n\n\n###")
text.config(yscrollcommand=scrol.set)
text.grid(sticky="W")

scrol.config(command=text.yview)
scrol.grid(row = 0, column=2, sticky="NS")

buton = tk.Button(frame, text='close', command=pencere.destroy)
buton.grid(row = 0, column = 1)

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