2015-11-10 49 views
10

Sto cercando di capire come modificare il titolo di un frame Tkinter. Di seguito è riportato il codice semplificato che simula la parte del mio programma in cui sto cercando di cambiare il titolo:Cambia titolo frame Tkinter

from Tkinter import * 

class start_window(Frame): 
    def __init__(self, parent=None): 
     Frame.__init__(self, parent) 
     Frame.pack(self) 
     Label(self, text = 'Test', width=30).pack() 

if __name__ == '__main__': 
    start_window().mainloop() 

Con questo codice di esempio il telaio ha il titolo standard "tk" ma vorrei cambiarlo a qualcosa di simile "Il mio database". Ho provato tutto quello che riesco a pensare senza successo. Qualsiasi aiuto sarebbe apprezzato.

risposta

18

Prova questa:

if __name__ == '__main__': 
    root = Tk() 
    root.title("My Database") 
    root.geometry("500x400") 
    app = start_window(root) 
    root.mainloop() 
+1

Ciao, Grazie mille. Questo ha funzionato perfettamente. Apprezzo molto il vostro aiuto. – user3798654

1

In primo luogo, si dovrebbe essere la creazione esplicitamente la finestra principale con la creazione di un'istanza di Tk. Quando lo fai, puoi usare il riferimento a questa finestra per cambiare il titolo.

Raccomando anche non utilizzando un'importazione globale. Al contrario, importare tkinter per nome e anteporre i comandi tkinter al nome del modulo. Io uso il nome tk per ridurre la digitazione:

import Tkinter as tk 

class start_window(tk.Frame): 
    def __init__(self, parent=None): 
     tk.Frame.__init__(self, parent) 
     tk.Frame.pack(self) 
     tk.Label(self, text = 'Test', width=30).pack() 

if __name__ == '__main__': 
    root = tk.Tk() 
    root.wm_title("This is my title") 
    start_window(root) 
    root.mainloop() 

Infine, per rendere il codice più facile da leggere vi suggerisco di dare il vostro nome della classe la prima lettera maiuscola per essere coerenti con quasi tutti i programmatori Python ovunque:

class StartWindow(...): 

Utilizzando le stesse convenzioni di tutti gli altri, è più facile per noi comprendere il codice.

Per ulteriori informazioni sulle convenzioni di denominazione utilizzate dalla comunità Tkinter, vedere PEP8

+0

Ciao, grazie mille per la tua risposta. Sfortunatamente questo non ha funzionato per me. Dopo aver apportato le modifiche suggerite, finisco con due finestre widget, una simile al mio widget originale e una seconda vuota ma con il titolo desiderato. Comunque la prossima risposta ha risolto il mio problema. Grazie, apprezzo davvero il tuo aiuto. – user3798654

+0

Finirai con due finestre se crei dei widget prima di chiamare 'tk.Tk()'. Dovresti creare esplicitamente la finestra di root prima di creare altri widget. –

0

Io generalmente iniziano le mie applicazioni Tkinter con

#!/usr/local/bin/python3 

import Tkinter as tk 

root = Tk() 

root.title('The name of my app') 

root.minsize(300,300) 
root.geometry("800x800") 

root.mainloop()