GTK3 + Glade не расширяет автоматически ScrolledWindow, чтобы отобразить полное содержимое TreeView.Linux

Ответить
Anonymous
 GTK3 + Glade не расширяет автоматически ScrolledWindow, чтобы отобразить полное содержимое TreeView.

Сообщение Anonymous »

Мой пример кода: https://github.com/BSFEMA/GTK_Help
Здесь есть две программы, которые делают то же самое.
#1: example_GPT.py
Это было написано ChatGPT в качестве примера для начала. Это работает, и TreeView отображается полностью.
#2: example_Glade.py + example_Glade.glade
Это было написано мной с использованием Glade для Пользовательский интерфейс. Это работает, но ScrolledWindow не расширяется для полного отображения содержимого виджета TreeView.
Example_Glade.glade

Код: Выделить всё















main_window
False


True
False
vertical


tree_grid
True
True
liststore1





True
True
0




Print Selected Files
True
True
True


False
True
2






Example_Glade.py

Код: Выделить всё

import os
import sys
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk as gtk

class Main():
def __init__(self):
# Setup Glade Gtk
self.builder = gtk.Builder()
self.builder.add_from_file(os.path.join(sys.path[0], "Example_2_Glade.glade"))  # Looking where the python script is located
self.builder.connect_signals(self)
# Get UI components
window = self.builder.get_object("main_window")
window.connect("delete-event", gtk.main_quit)
window.set_title('File Browser')
window.show()
#
# Create a TreeViewColumn for the original filename
renderer_text1 = gtk.CellRendererText()
column_text1 = gtk.TreeViewColumn("Filename", renderer_text1, text=0)
column_text1.set_sizing(gtk.TreeViewColumnSizing.AUTOSIZE)
column_text1.set_resizable(True)
# Create a TreeViewColumn for the new filename
renderer_text2 = gtk.CellRendererText()
column_text2 = gtk.TreeViewColumn("Filesize", renderer_text2, text=1)
column_text2.set_sizing(gtk.TreeViewColumnSizing.AUTOSIZE)
column_text2.set_resizable(True)
# Create a TreeViewColumn for the checkbox
renderer_toggle = gtk.CellRendererToggle()
renderer_toggle.connect("toggled", self.on_cell_toggled)
column_toggle = gtk.TreeViewColumn("Check", renderer_toggle, active=2)
column_toggle.set_sizing(gtk.TreeViewColumnSizing.AUTOSIZE)
column_toggle.set_resizable(True)
# Create a TreeView and add the columns
tree_grid = self.builder.get_object("tree_grid")
tree_grid.append_column(column_text1)
tree_grid.append_column(column_text2)
tree_grid.append_column(column_toggle)
#
self.populate_model(sys.path[0])

def on_cell_toggled(self, widget, path):
liststore1 = self.builder.get_object("liststore1")
liststore1[path][2] = not liststore1[path][2]

def populate_model(self, folder_path):
liststore1 = self.builder.get_object("liststore1")
for filename in os.listdir(folder_path):
filesize = os.path.getsize(os.path.join(folder_path, filename))
liststore1.append([str(filename), str(filesize), True])

if __name__ == '__main__':
main = Main()
gtk.main()
Example_Glade.py (после запуска)
Example_Glade.py (после запуска и последующего расширения окна вручную)
Мой вопрос: почему в примере «Example_Glade.py + example_Glade.glade» ScrolledWindow не расширяется, чтобы полностью отобразить содержимое виджета TreeView? Что мне нужно сделать, чтобы это исправить?
Я понимаю, что могу удалить ScrolledWindow и просто использовать TreeView в моем примере Glade, который затем будет полностью отображать TreeView. Хотя это почти то, что мне нужно, мне все же хотелось бы иметь ScrolledWindow, чтобы получать полосы прокрутки в случае, если данных много или имена файлов очень большие и могут прокручиваться за пределы экрана. В конечном счете, это был всего лишь пример, и я хочу создать что-то с большим количеством столбцов и данных, что может потребовать горизонтальных и вертикальных полос прокрутки.
Любые предложения о том, что я делаю неправильно в Glade, или если есть способ установить размер ScrolledWindow на основе полностью отображаемого размера TreeView, или любые другие решения будут наиболее признательны.

Подробнее здесь: https://stackoverflow.com/questions/786 ... of-treevie
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»