2016-12-02 1 views
2

Я пытаюсь изменить ширину столбцов. Когда я устанавливаю их, чтобы автоматически сортировать все хорошие размеры, но я не могу сделать их меньше.Autosize Python Gtk3 TreeViewColumn, но сделать их resizable

Затем я установил столбцы в фиксированный размер, но теперь горизонтальная полоса прокрутки больше не отображается.

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

#!/usr/bin/env python 

import gi 
gi.require_version('Gtk', '3.0') 
from gi.repository import Gtk 

window = Gtk.Window(Gtk.WindowType.TOPLEVEL) 
window.set_size_request(400, 200) 
mainbox = Gtk.VBox() 
window.add(mainbox) 

scrolled_window = Gtk.ScrolledWindow() 
mainbox.pack_start(scrolled_window, True, True, 0) 

transactions_liststore = Gtk.ListStore(str, str, str, str, str, str) 
for n in range(30): 
    transactions_liststore.append(["A", "2016-10-10", "Ulrich Farmer", "99,99 EUR", "A short Text", "A longer Text with much much more more content"]) 
treeview = Gtk.TreeView(Gtk.TreeModelSort(transactions_liststore)) 
scrolled_window.add(treeview) 

for n, name in enumerate(["Type", "Date", "Name", "Value", "Info1", "Info2"]): 
    cell = Gtk.CellRendererText() 
    column = Gtk.TreeViewColumn(name, cell, text=n) 

    if True: 
     column.set_sizing(Gtk.TreeViewColumnSizing.FIXED) 
     column.set_fixed_width(50) 
     column.set_min_width(50) 
     column.set_expand(True) 

    column.set_resizable(True) 
    column.set_reorderable(True) 
    treeview.append_column(column) 

window.show_all() 
Gtk.main() 

редактировать: найти на https://lazka.github.io/pgi-docs/Gtk-3.0/classes/TreeViewColumn.html#Gtk.TreeViewColumn.set_resizable

Если изменяемыми истинна и проклейки режим колонны Gtk.TreeViewColumnSizing.AUTOSIZE, то режим калибровки изменяется на Gtk.TreeViewColumnSizing.GROW_ONLY ,

ответ

1

Попробуйте этот код:

if True: 
    column.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE) 
    #column.set_fixed_width(50) 

Edit:

import gi 
gi.require_version('Gtk', '3.0') 
from gi.repository import Gtk, GdkPixbuf, Gdk 
import os, sys 


class GUI: 
    def __init__(self): 
     window = Gtk.Window(Gtk.WindowType.TOPLEVEL) 
     window.set_size_request(400, 200) 
     mainbox = Gtk.VBox() 
     window.add(mainbox) 
     window.connect('destroy', self.on_window_destroy) 

     scrolled_window = Gtk.ScrolledWindow() 
     mainbox.pack_start(scrolled_window, True, True, 0) 

     transactions_liststore = Gtk.ListStore(str, str, str, str, str, str)  
     for n in range(30): 
      transactions_liststore.append(["A", "2016-10-10", "Ulrich Farmer", "99,99 EUR", "A longer Text with much much more more content", "A short Text"]) 
     treeview = Gtk.TreeView(Gtk.TreeModelSort(transactions_liststore)) 
     scrolled_window.add(treeview) 

     for n, name in enumerate(["Type", "Date", "Name", "Value", "Info1", "Info2"]): 
      cell = Gtk.CellRendererText() 
      column = Gtk.TreeViewColumn(name, cell, text=n) 

      column.set_min_width(50) 
      column.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE) 
      column.set_resizable(True) 
      column.set_reorderable(True) 
      treeview.append_column(column) 
     window.show_all() 

    def on_window_destroy(self, window): 
     Gtk.main_quit() 
def main(): 
    app = GUI() 
    Gtk.main() 

if __name__ == "__main__": 
    sys.exit(main()) 

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

+0

Спасибо за ваш комментарий. Это моя проблема: когда я устанавливаю их для автоматической настройки наличия хорошего размера, но я не могу сделать их меньше. – oxidworks

+0

Вы пытаетесь сделать их меньше, чем имя столбца? И в какой колонке вы пытаетесь сделать меньше? – theGtknerd

+0

Не меньше имени столбца, а затем текста содержимого. Например, подумайте, что Info1 имеет одну строку с очень длинным текстовым контентом, но вы хотите, чтобы строка была очень маленькой, потому что более необходимо видеть строки Info2 :-) – oxidworks

Смежные вопросы