Forum >> Principianti >> Problema con barre scorrimento Tkinter

Pagina: 1

Provo a linkare qui una richiesta postata nella sezione GUI , vista da quasi 600 persone e con NEPPURE una risposta.




Chiedo una cosa cosi difficile ? (spero di no)





Grazie e scusate

------
Alberto
Mah, più che altro è che hai postato una filastrocca di codice che al 90% non c'entra nulla con il tuo problema e che quindi non invoglia tanto a dargli un'occhiata. Problema, il tuo, che peraltro è da un lato abbastanza esotico, dall'altro abbastanza incasinato in tk (perché diciamolo tra parentesi, proprio le tk bisognerebbe imparare a farne a meno, uno di questi anni...).


E del resto non è che proprio manchi la documentazione, vero: http://effbot.org/zone/tkinter-scrollbar-patterns.htm (da cui, a una occhiata velocissima, direi che il tuo problema è che non hai capito che bisogna aggiungere un Canvas all'insalata).


Oppure, dopo una ancora più veloce googlata: https://lucasg.github.io/2015/07/21/How-to-make-a-proper-double-scrollbar-frame-in-Tkinter/ (che mi sembra da un lato una soluzione "elegante", dall'altro evidenzia le carenze delle tk in modo impietoso).

Grazie RicPol, pero' oltre ad aver cercato con google ho guardato alcuni siti dove cerco di solito (http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/index.html e https://www.tutorialspoint.com/python3/python_gui_programming.htm) e nessuno mi aveva fatto capire che ci voleva una Canvass.




Problema, il tuo, che peraltro è da un lato abbastanza esotico,
dall'altro abbastanza incasinato in tk (perché diciamolo tra pìarentesi,
proprio le tk bisognerebbe imparare a farne a meno, uno di questi
anni...).





Mi puoi per cortesia spiegare cosa intendi per "abbastanza esotico" e quale libreria potrebbe essere piu' adatta per fare quello che vorrei io.

Io vorrei che la visualizzazione fosse carina, as esempio fatta con le label e non con le listbox (se possibili).




Grazie

------
Alberto
> oltre ad aver cercato con google

Il link che ti ho dato è il terzo che compare googlando per "tkinter double scrollbar"... direi che forse potremmo avere un problema di fondo?

> ho guardato alcuni siti dove cerco di solito

di cui uno dice di essere aggiornato al 2013 ed è chiaramente un condensato di documentazione, e uno è un tutorial molto basico raccolto in un sito di tutorial molto generici. Nessuno dei due è la documentazione di tkinter. Eh...




> cosa intendi per "abbastanza esotico"


Quante gui desktop hai visto in giro che hanno la doppia scrollbar? Di solito già una scrollbar è una seccatura (a meno ovviamente di elementi naturalmente portati allo scrolling, come il canvas di un editor di testo o una lista), ma due scrollbar sono generalmente segno di cattiva progettazione del layout e per l'utente sono un'esperienza orribile. In genere si tende a evitare la doppia scrollbar e sono rari i casi in cui invece serve -> "abbastanza esotico"




> quale libreria potrebbe essere piu' adatta

Boh non so, le tk sono sempre un po' un pasticcio. Per dire, con le wx una roba del genere si fa in modo molto più pulito e sensato:

import wx
import wx.lib.scrolledpanel as scrolled

class ScrPanel(scrolled.ScrolledPanel):
    def __init__(self, *a, **k):
        scrolled.ScrolledPanel.__init__(self, *a, **k)
        s = wx.GridSizer(10, 10, 5) # butto giu' 100 pulsanti per vedere...
        for i in range(100):
            s.Add(wx.Button(self, size=(50, 50)))
        self.SetSizer(s)
        self.SetupScrolling()

class MainFrame(wx.Frame):
    def __init__(self, *a, **k):
        wx.Frame.__init__(self, *a, **k)
        p = ScrPanel(self)

if __name__ == '__main__':
    app = wx.App()
    MainFrame(None).Show()
    app.MainLoop()
E con le qt immagino che sia più o meno lo stesso.





> vorrei che la visualizzazione fosse carina

Eh... non usare il doppio scrolling sarebbe un primo passo.




Intanto grazie per l’esempio in wx che proverò a capire; per il sito di tkinter ho anche guardato , parlano di scrollbar ma non ho visto (almeno io ) dei riferimenti alla doppia scrollbar.



La doppia scrollbar non è una scelta mia, ma è dovuta ad una visualizzazione di un file che ha dati per circa 200 caratteri, suddivisi in circa 25 colonne ; mentre le righe possono essere da 1 a 3/400.

Di tratta di un file di backorder di un magazzino; io ho pensato di visualizzarlo tutto così da aver tutto sotto mano e scorrendo l’ordine che mi serve senza digitare magari data e n. Ordine.

Se tu però hai dei suggerimenti per ottimizzare la visualizzazione e per non aver la doppia scrollbar...... io sono tutto orecchi.

Non penso che centri , ma i dati cambiano ogni volta che vado a leggere il file.

Grazie
------
Alberto
> per il sito di tkinter ho anche guardato

beh vedi tu, io ti ho linkato la documentazione di tkinter al punto in cui se ne parla.





Per il resto, capisci che non è affatto insolito trovare una sorgente di dati che, quando viene visualizzata così com'è, "occupa spazio" in entrambe le direzioni. Pensa solo a molti file excel. La ragione è che la formattazione di questi oggetti non risponde a criteri di bellezza, ma di funzionalità. Per dire, vanno a capo quando il record è finito, non quando lo schermo è finito.


Ora, non c'è dubbio che un visualizzatore "tale e quale" come excel abbia bisogno in questi casi di due scrollbar. E non ci sono dubbi che sia sgradevole leggere a video un foglio excel molto grande. Ma appunto, excel non si pone lo scopo principale di formattare i dati in modo gradevole alla vista, ma di offrire una serie di operazioni sui dati che visualizza. E infatti quando cerchi, per esempio, di stampare un foglio excel hai sempre un attrito tra quello che vedi sullo schermo e quello che esce dalla stampante. In word questo non succede: e hai mai riflettuto davvero, da un punto di vista di design dell'interfaccia, perché word ed excel sono così diversi?... Uhm. Tanto per dire che prima di scrivere una gui desktop bisognerebbe guardare bene come funzionano quelle che ci sono in giro.


Il problema qui è: se la tua gui non riesce a visualizzare i dati in modo più gradevole di quanto farebbe excel, allora forse... apri i dati con excel e lascia perdere. Se invece quello che cerchi è una visualizzazione più gradevole, allora DEVI porti il problema di come eliminare la doppia scrollbar. Questo dipende dai tuoi dati e da cosa si propone di fare la tua gui... ma il problema di design te lo devi porre.






Pagina: 1



Esegui il login per scrivere una risposta.