2016-03-31 15 views
5

Ho qualche problema con le schede della classe ttk Notebook in python 2.7. Non riesco a vedere tutte le schede che creo.Impossibile visualizzare tutte le schede in ttk.Notebook

Ho fatto una quantità minima di codice per visualizzare il problema:

from Tkinter import * 
import ttk 

root = Tk() 
nb = ttk.Notebook(root, width=320, height=240) 
nb.pack(fill=BOTH, expand=1) 
page0 = Frame(nb) 
page1 = Frame(nb) 
page2 = Frame(nb) 
page3 = Frame(nb) 
page4 = Frame(nb) 
nb.add(page0, text="0") 
nb.add(page1, text="1") 
nb.add(page2, text="2") 
nb.add(page3, text="3") 
nb.add(page4, text="4") 

root.mainloop() 

Tutto ciò che posso vedere è

this

ho cercato di cambiare il numero di schede e ho notato la dimensione della la barra delle schede in alto cambia e, a meno che non ci sia una sola scheda sola, non riesco a vederle tutte, come puoi vedere:

that

Quello che ho cercato che non ha fatto nulla:

  • schede impostazione della larghezza
  • Lo spostamento del .Pack() intorno
  • Aggiunta .Pack() per le linguette
  • Utilizzando TTK. telaio anziché tk.Frame
  • Googling per un problema simile

Wha t ho provato che ha funzionato, ma non è quello che voglio:

  • Non utilizzando le schede (troppi roba da mostrare)
  • Avere una sola scheda

Io apprezzo tutto l'aiuto, grazie !

+3

Questo sembra un bug in ttk. Se si aggiunge uno spazio davanti o dietro ogni etichetta (ad es .: 'text =" 1 "' vengono visualizzati tutti –

+1

@BryanOakley Su Windows, è peggio, ho bisogno di 6 spazi dopo '4' per vedere' 4 ' su una scheda uguale ad altri –

+1

Ho aperto https://bugs.python.org/issue26682 su questo problema, principalmente come documentazione del bug –

risposta

2

Quindi ho risolto il problema, ma non ho idea del perché tk stia facendo questo. Ho risolto questo tab sovrapporsi aumentando la lunghezza del testo della scheda. Ho cambiato questa parte del codice:

nb.add(page0, text="long_name1") 
nb.add(page1, text="long_name2") 
nb.add(page2, text="long_name3") 
nb.add(page3, text="long_name4") 
nb.add(page4, text="long_name5") 

Ancora una volta non so perché tk fa questo! Qualcuno che ha più esperienza con tk potrebbe probabilmente dirti perché.

+1

Riducendo i nomi lunghi, il minimo che funziona è di 3 caratteri, con il primo e l'ultimo non vuoto –

+1

Grazie per l'aiuto! Ho dovuto utilizzare minimo 5 caratteri per poter vedere tutte le schede. – Morb

Problemi correlati