मैंने अभी पायथन जीटीके का उपयोग करना शुरू किया है। मैं 3 टैब के साथ एक दृश्य डिजाइन करने की कोशिश कर रहा हूं (यह जीटीके.नोटबुक () का उपयोग करके किया गया है)। एक टैब में, मैंने एक ComboBoxText और एक TreeView जोड़ा है। मैं वृक्षदृश्य में स्क्रॉलबार जोड़ने की कोशिश कर रहा हूं, लेकिन ऐसा करने में सक्षम नहीं हूं। यहाँ हमें संदर्भ के लिए मेरा कोड

import gi 
# Since a system can have multiple versions 
# of GTK + installed, we want to make 
# sure that we are importing GTK + 3. 
gi.require_version("Gtk", "3.0") 
from gi.repository import Gtk, Pango

# list of available drivers
drivers_available = [
    "All",
    "drv_ccfl",
    "drv_uart",
    "drv_adc",
    "drv_gpio",
    "drv_ffs",
    "drv_can",
    "drv_pwm",
    "drv_temp",
    "drv_volt",
    "drv_photo",
    "drv_ble",
    "drv_gpu"
    ]
    
# list of tuples for each software, containing the software name, initial release, and main programming languages used
driver_parameters_list = [
    ("drv_ccfl", "param1","string", "xx" ),
    ("drv_uart", "param2", "int", "10"),
    ("drv_adc", "param3", "float", "9.5"),
    ("drv_gpio", "param5", "bool", "true"),
    ("drv_ffs", "param6", "int", "0"),
    ("drv_can", "param7", "float", "54.0"),
    ("drv_pwm", "param8", "int",  "20"),
    ("drv_temp", "param9", "bool", "false"),
    ("drv_volt", "param10", "string", "xyz"),
    ("drv_photo", "param11", "string", "abc"),
    ("drv_ble", "param12", "float", "35.9"),
    ("drv_gpu", "param13", "int", "24"),
    ("drv_ccfl", "param14","int", "45" ),
    ("drv_uart", "param15", "int", "25"),
    ("drv_adc", "param16", "string", "yy"),
    ("drv_gpio", "param17", "float", "13.9"),
    ("drv_ffs", "param18", "int", "0"),
    ("drv_can", "param19", "string", "xyz"),
    ("drv_pwm", "param20", "float",  "3.6"),
    ("drv_temp", "param21", "int", "27"),
    ("drv_ble", "param12", "float", "35.9"),
    ("drv_gpu", "param13", "int", "24"),
    ("drv_ccfl", "param14","int", "45" ),
    ("drv_uart", "param15", "int", "25"),
    ("drv_adc", "param16", "string", "yy"),
    ("drv_gpio", "param17", "float", "13.9"),
    ("drv_ffs", "param18", "int", "0"),
    ("drv_can", "param19", "string", "xyz"),
    ("drv_pwm", "param20", "float",  "3.6"),
    ("drv_temp", "param21", "int", "00")
    ]

columns = ["Driver_type", "Parameter", "type", "Value"]

class MyWindow(Gtk.Window): 
    def __init__(self): 
        Gtk.Window.__init__(self, title ="Pricol") 
        self.set_border_width(10) 
        #self.set_default_size(1000, 200) 
        #self.set_resizable(False)
        
        # Create a Box and add it to the Window widget
        vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=20) 
        vbox.set_property("height-request", 500)
        self.add(vbox)
        
        self.notebook = Gtk.Notebook() 
        self.notebook.set_scrollable(True)
        self.notebook.set_show_border(True)
        self.notebook.set_tab_pos(0)
        vbox.pack_start(self.notebook, False, False, 0)
        
        # Add a box to Page 1 in order to be able to add more widgets
        self.page1 = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=20) 
        
        self.page1.set_border_width(50) 

        # Add a comboBox for the dropdown
        drivers_comboBox = Gtk.ComboBoxText() 
        drivers_comboBox.connect("changed", self.on_drivers_comboBox_changed)
        drivers_comboBox.set_entry_text_column(0) 
        drivers_comboBox.set_wrap_width(1)
        self.page1.add(drivers_comboBox)
        
        # Add drivers in the list
        for driver in drivers_available: 
            drivers_comboBox.append_text(driver) 
            
        drivers_comboBox.set_active(0) 
        
        ##########
        # Create a tree for the driver paramenter list
        # The data in the model (three strings for each row, one for each column        
        listmodel = Gtk.ListStore(str, str, str, str)
        # append the values in the model
        for i in range(len(driver_parameters_list)):
            listmodel.append(driver_parameters_list[i])
        
        self.driver_filter = listmodel.filter_new()
        self.driver_filter.set_visible_func(self.driver_filter_func)
        
        # a treeview to see the data stored in the model
        view = Gtk.TreeView(model=self.driver_filter)
        # for each column
        for i, column in enumerate(columns):
            # cellrenderer to render the text
            cell = Gtk.CellRendererText()
            # the text in the first column should be in boldface
            if i == 0:
                cell.props.weight_set = True
                #cell.props.weight = Pango.Weight.BOLD
            # the column is created
            col = Gtk.TreeViewColumn(column, cell, text=i)
            col.set_min_width(250)
            # and it is appended to the treeview
            view.append_column(col)
        
        view.set_grid_lines(3)
        
        grid = Gtk.Grid()
        grid.attach(view, 0, 0, 1, 1)
    
        self.page1.add(grid) 
        ##########
        
        
        # Add Page 1 as a Tab
        self.page1_title = Gtk.Label()
        self.page1_title.set_property("height-request", 50)
        self.page1_title.set_markup("<b><big>Drivers</big></b>")
        self.page1_title.set_property("width-request", 150)
        self.notebook.append_page(self.page1, self.page1_title ) 
        
                
        # Add a box to Page 2 in order to be able to add more widgets
        self.page2 = Gtk.Box() 
        self.page2.set_border_width(50) 
        
        # Add widgets to page 2 here
        
        ##
        
        # Add Page 2 as a tab
        self.page2_title = Gtk.Label()
        self.page2_title.set_property("height-request", 50)
        self.page2_title.set_markup("<b><big>Data</big></b>")
        self.page2_title.set_property("width-request", 150)
        self.notebook.append_page(self.page2, self.page2_title )
        
        
        
        
        # Add a box to Page 3 in order to be able to add more widgets
        self.page3 = Gtk.Box() 
        self.page3.set_border_width(50) 
        
        # Add widgets to page 3 here
        
        ##
        
        # Add Page 3 as a tab
        self.page3_title = Gtk.Label()
        self.page3_title.set_property("height-request", 50)
        self.page3_title.set_markup("<b><big>View</big></b>")
        self.page3_title.set_property("width-request", 150)
        self.notebook.append_page(self.page3, self.page3_title )
        
        
    def on_drivers_comboBox_changed(self, combo):
        # we set the current language filter to the button's label
        self.current_filter_driver = combo.get_active_text()
        # we update the filter, which updates in turn the view
        self.driver_filter.refilter()
    
    
    def driver_filter_func(self, model, iter, data):
        """Tests if the language in the row is the one in the filter"""
        if (
            self.current_filter_driver is None
            or self.current_filter_driver == "All"
        ):
            return True
        else:
            return model[iter][0] == self.current_filter_driver
            
    
    def on_selection_button_clicked(self, widget):
        """Called on any of the button clicks"""
        # we set the current language filter to the button's label
        self.current_filter_driver = widget.get_label()
        # we update the filter, which updates in turn the view
        self.driver_filter.refilter()
        
        
        
win = MyWindow() 
win.connect("destroy", Gtk.main_quit) 
# Display the window. 
win.show_all() 
# Start the GTK + processing loop 
Gtk.main() 

सूची का आकार बढ़ने पर दृश्य का आकार बढ़ता रहता है। साथ ही, जब मैं ड्रॉपडाउन में फ़िल्टर का उपयोग करता हूं, तो दृश्य फिर से आकार बदलता है। क्या कोई भी मेरी इस के साथ मदद कर सकता है?

0
SP07 25 जिंदा 2021, 11:13

1 उत्तर

सबसे बढ़िया उत्तर

बस अपने दृश्य और ग्रिड के बीच ScrolledWindow जोड़ें:

...
        view.set_grid_lines(3)

        scrolled_window = Gtk.ScrolledWindow(vexpand=True, hexpand=True)
        scrolled_window.add(view)
        
        grid = Gtk.Grid()
        grid.attach(scrolled_window, 0, 0, 1, 1)
    
        self.page1.add(grid) 
...
0
elya5 25 जिंदा 2021, 11:39
उत्तर के लिए बहुत बहुत धन्यवाद :)
 – 
SP07
25 जिंदा 2021, 13:22