2013-11-15 11 views
5

Sto provando a creare un pulsante e modificare l'altezza e la larghezza utilizzando il codice sottostante ma il pulsante effettivo non viene visualizzato fisicamente. Tuttavia, se si passa il mouse sopra l'area che dovrebbe essere e fare clic su si aprirà la nuova finestra. Qualche idea?tkinter button height and width

import sys 
from tkinter import * 

#main menu 
def mmWindow(): 
    mmWindow=Tk() 
    mmWindow.geometry('600x600') 


#first window 
mWindow= Tk() 
mWindow.geometry('1920x1080+0+0') 
mWindow.title('DMX512 Controller') 

wtitle = Label (mWindow, text = "Pi DMX", fg = 'blue') 
wtitle.place(x = 640, y = 100) 

#main menu button 
mmbutton = Button (mWindow, text = "Main Menu",command = mmWindow) 
mmbutton.place(x=200, y = 200) 
mmbutton.config(width=200, height=200) 
+0

In realtà, tuttavia esse indicano fisicamente. Il problema è che, essendo così enorme, è difficile distinguere dal resto della finestra. – iCodez

+0

errore ragazzo scolastico !!! grazie, ora il mio prossimo problema posso cambiare la larghezza ma si verifica ancora l'errore originale dell'altezza, la dimensione fisica effettiva del pulsante non cambia ma l'area 'facendo clic' ... ... come forse hai già indovinato un noob a pitone. – user2996828

+0

Sono un po 'confuso su quello che stai facendo. Perché vuoi creare un pulsante e poi modificarne l'altezza/larghezza una riga dopo averla posizionata sulla finestra? Cosa stai cercando di fare qui? Stai cercando di fare qualcosa di speciale o stai solo cercando di ottenere un pulsante con una dimensione personalizzata posizionata sulla finestra? – iCodez

risposta

3

quanto riguarda la tua domanda iniziale: il pulsante fa apparire fisicamente. Il problema è che, essendo così grande, è difficile distinguere dal resto della finestra.

Ora, hai detto che il tuo obiettivo finale è cambiare le dimensioni di un pulsante. Se è così, allora siete sulla strada giusta: usate le opzioni height e width per questo.

Tuttavia, mi sento di raccomandare che si fanno un paio di modifiche al codice:

  1. Non fare il pulsante in modo enorme. Anche su un monitor molto grande, avere un pulsante di quelle dimensioni è decisamente eccessivo.
  2. Non rendere la finestra così grande. Nessuno vuole un'applicazione che occupa l'intero schermo.
  3. Utilizzare .grid anziché .place. In questo modo ti sarà più facile posizionare i widget dove preferisci.
  4. Impostare le opzioni height e width quando si fa il pulsante, non dopo.
  5. Non è necessario importare sys qui. Importa solo ciò di cui hai bisogno.
  6. Non importare in questo modo: from tkinter import *. Facendo ciò si scaricano un sacco di nomi nello spazio dei nomi globale che possono facilmente essere sovrascritti.

Ecco la mia versione dello script:

import tkinter as tk 

def mmWindow(): 
    mmWindow = tk.Tk() 
    mmWindow.geometry('600x600') 

mWindow = tk.Tk() 
# You can set any size you want 
mWindow.geometry('500x500+0+0') 
mWindow.title('DMX512 Controller') 

wtitle = tk.Label(mWindow, text="Pi DMX", fg='blue') 
wtitle.grid(row=0, column=1) 

# You can set any height and width you want 
mmbutton = tk.Button(mWindow, height=5, width=20, text="Main Menu", command=mmWindow) 
mmbutton.grid(row=1, column=1) 

mWindow.mainloop() 
+0

grazie per questo, ho appena copiato il tuo codice e l'ho eseguito, poi ho provato a cambiare l'altezza e ancora non cambia le dimensioni del pulsante come nel contorno rimane della stessa dimensione, cambia il larghezza ma non l'altezza ....... – user2996828

+0

@ user2996828 - Huh, beh, temo di non sapere perché lo è. Il codice che ho dato funziona su un normale sistema operativo (Windows, Mac, Linux). Tuttavia, hai detto "touchscreen", che implicherebbe un tablet di qualche tipo. Non ho un tablet con me quindi non posso risolvere questo problema. – iCodez

+0

forse è il mio set up, al momento non lo sto eseguendo un touchscreen, solo il mio mac con IDLE python versione 3.3.2 e tk versione 8.5.14, l'ho pensato w così bizzarro che la larghezza è cambiata e l'altezza no: -s – user2996828

Problemi correlati