Quando sviluppi applicazioni GUI in Python, la gestione delle dimensioni e del ridimensionamento dei widget è un aspetto fondamentale per migliorare l’esperienza utente. In questo articolo, spiegherò come configurare le dimensioni iniziali e il ridimensionamento dei widget utilizzando i principali framework GUI di Python, Tkinter e PyQt. Verranno presentati esempi di codice specifici, best practice, sfide comuni e soluzioni, per aiutarti a sviluppare competenze pratiche.
Impostazione delle dimensioni iniziali dei widget
L’impostazione delle dimensioni iniziali dei widget è un elemento chiave che influisce sulla prima impressione che un utente ha quando apre un’applicazione. Vediamo come configurare le dimensioni iniziali in Tkinter e PyQt, i principali framework GUI di Python.
Impostazione delle dimensioni iniziali in Tkinter
In Tkinter, per impostare le dimensioni di un widget si usano le proprietà width
e height
. Ecco un esempio in cui impostiamo le dimensioni iniziali di un pulsante in Tkinter.
import tkinter as tk
root = tk.Tk()
root.geometry("300x200") # Imposta le dimensioni iniziali della finestra
button = tk.Button(root, text="Click Me", width=20, height=3)
button.pack()
root.mainloop()
In questo esempio, la dimensione della finestra è impostata su 300×200 pixel, mentre il pulsante avrà una larghezza di 20 caratteri e un’altezza di 3 righe.
Impostazione delle dimensioni iniziali in PyQt
In PyQt, si utilizzano i metodi setFixedSize
e resize
per impostare le dimensioni di un widget. Ecco un esempio in cui impostiamo le dimensioni iniziali di un pulsante in PyQt.
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
app = QApplication([])
window = QWidget()
window.setFixedSize(300, 200) # Imposta le dimensioni iniziali della finestra
button = QPushButton('Click Me', window)
button.resize(100, 50) # Imposta le dimensioni del pulsante
button.move(100, 75) # Imposta la posizione del pulsante
window.show()
app.exec_()
In questo esempio, la finestra è impostata su 300×200 pixel, mentre il pulsante avrà dimensioni di 100×50 pixel. Inoltre, è stata anche impostata la posizione del pulsante.
Ridimensionamento dei widget
Il ridimensionamento dinamico dei widget in base alle azioni dell’utente è importante per creare applicazioni interattive. Qui vedremo come implementare il ridimensionamento con Tkinter e PyQt.
Ridimensionamento in Tkinter
In Tkinter, per ridimensionare un widget si utilizza il metodo config
. È inoltre possibile impostare un gestore per l’evento di ridimensionamento della finestra.
import tkinter as tk
def resize_button(event):
button.config(width=event.width // 10, height=event.height // 50)
root = tk.Tk()
root.geometry("300x200") # Imposta le dimensioni iniziali della finestra
button = tk.Button(root, text="Click Me", width=20, height=3)
button.pack(expand=True)
root.bind('<Configure>', resize_button)
root.mainloop()
In questo esempio, ogni volta che la finestra viene ridimensionata, la funzione resize_button
viene chiamata e le dimensioni del pulsante vengono modificate in base alle dimensioni della finestra.
Ridimensionamento in PyQt
In PyQt, si utilizza il metodo resize
per ridimensionare un widget. Inoltre, si può sovrascrivere il metodo resizeEvent
per intercettare l’evento di ridimensionamento della finestra.
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
class ResizeableWindow(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(100, 100, 300, 200) # Imposta le dimensioni iniziali della finestra
self.button = QPushButton('Click Me', self)
self.button.resize(100, 50) # Imposta le dimensioni iniziali del pulsante
self.button.move(100, 75) # Imposta la posizione del pulsante
def resizeEvent(self, event):
new_width = self.width() // 3
new_height = self.height() // 4
self.button.resize(new_width, new_height)
app = QApplication([])
window = ResizeableWindow()
window.show()
app.exec_()
In questo esempio, ogni volta che la finestra viene ridimensionata, il metodo resizeEvent
viene chiamato e le dimensioni del pulsante vengono modificate dinamicamente in base alle dimensioni della finestra.
Ridimensionamento automatico dei widget
Qui vedremo come impostare i widget affinché si ridimensionino automaticamente in base alle dimensioni della finestra principale. Il ridimensionamento automatico è un elemento chiave per il design responsive.
Ridimensionamento automatico in Tkinter
In Tkinter, è possibile configurare il ridimensionamento automatico dei widget utilizzando i gestori di layout pack
o grid
.
import tkinter as tk
root = tk.Tk()
root.geometry("400x300") # Imposta le dimensioni iniziali della finestra
frame = tk.Frame(root)
frame.pack(fill=tk.BOTH, expand=True) # Imposta il frame per ridimensionarsi automaticamente
button1 = tk.Button(frame, text="Button 1")
button1.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) # Imposta il pulsante per ridimensionarsi con il frame
button2 = tk.Button(frame, text="Button 2")
button2.pack(side=tk.RIGHT, fill=tk.BOTH, expand=True) # Imposta il pulsante per ridimensionarsi con il frame
root.mainloop()
In questo esempio, il frame e i pulsanti sono configurati per ridimensionarsi automaticamente in base alla finestra, utilizzando il gestore pack
.
Ridimensionamento automatico in PyQt
In PyQt, si utilizzano i layout QVBoxLayout
o QHBoxLayout
per impostare il ridimensionamento automatico dei widget.
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
app = QApplication([])
window = QWidget()
window.setWindowTitle('Auto Resize Example')
window.setGeometry(100, 100, 400, 300) # Imposta le dimensioni iniziali della finestra
layout = QVBoxLayout() # Crea un layout verticale
button1 = QPushButton('Button 1')
button2 = QPushButton('Button 2')
layout.addWidget(button1) # Aggiungi il pulsante al layout
layout.addWidget(button2) # Aggiungi il pulsante al layout
window.setLayout(layout) # Imposta il layout per la finestra
window.show()
app.exec_()
In questo esempio, il layout verticale ridimensiona automaticamente i pulsanti in base alle dimensioni della finestra.
Best practice per la gestione delle dimensioni
Qui esploreremo alcune best practice per gestire efficacemente le dimensioni dei widget. Seguendo queste linee guida, puoi creare applicazioni user-friendly e responsive.
Adottare il design responsive
Progetta i widget in modo che possano adattarsi a diverse dimensioni di schermo e risoluzioni. Utilizza i gestori di layout e le proprietà dei widget per fare in modo che le dimensioni si adattino automaticamente alla finestra principale.
Usare dimensioni relative
Evita di usare dimensioni fisse in pixel, e usa invece dimensioni relative. Per esempio, puoi sfruttare l’opzione expand
del gestore pack
di Tkinter o QSizePolicy
di PyQt.
Esempio: specifica di dimensioni relative in Tkinter
import tkinter as tk
root = tk.Tk()
root.geometry("400x300")
frame = tk.Frame(root)
frame.pack(fill=tk.BOTH, expand=True)
button1 = tk.Button(frame, text="Button 1")
button1.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
button2 = tk.Button(frame, text="Button 2")
button2.pack(side=tk.RIGHT, fill=tk.BOTH, expand=True)
root.mainloop()
Esempio: specifica di dimensioni relative in PyQt
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
app = QApplication([])
window = QWidget()
window.setGeometry(100, 100, 400, 300)
layout = QVBoxLayout()
button1 = QPushButton('Button 1')
button2 = QPushButton('Button 2')
layout.addWidget(button1)
layout.addWidget(button2)
window.setLayout(layout)
window.show()
app.exec_()
Utilizzare il layout a griglia
Per posizionare i widget in modo ordinato, utilizza il layout a griglia. Sia Tkinter con il gestore grid
che PyQt con QGridLayout
offrono soluzioni semplici per gestire il posizionamento e la dimensione dei widget.
Esempio: layout a griglia in Tkinter
import tkinter as tk
root = tk.Tk()
root.geometry("400x300")
for i in range(3):
for j in range(3):
button = tk.Button(root, text=f"Button {i},{j}")
button.grid(row=i, column=j, sticky="nsew")
for i in range(3):
root.grid_columnconfigure(i, weight=1)
root.grid_rowconfigure(i, weight=1)
root.mainloop()
Esempio: layout a griglia in PyQt
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QGridLayout
app = QApplication([])
window = QWidget()
window.setGeometry(100, 100, 400, 300)
layout = QGridLayout()
for i in range(3):
for j in range(3):
button = QPushButton(f'Button {i},{j}', window)
layout.addWidget(button, i, j)
window.setLayout(layout)
window.show()
app.exec_()
Impostare la dimensione minima/massima
Impostare una dimensione minima e massima per i widget consente di limitare il ridimensionamento e prevenire distorsioni del layout.
Esempio: impostare la dimensione minima/massima in Tkinter
import tkinter as tk
root = tk.Tk()
root.geometry("400x300")
root.minsize(300, 200)
root.maxsize(600, 400)
label = tk.Label(root, text="Resizable Window")
label.pack(expand=True)
root.mainloop()
Esempio: impostare la dimensione minima/massima in PyQt
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
app = QApplication([])
window = QWidget()
window.setGeometry(100, 100, 400, 300)
window.setMinimumSize(300, 200)
window.setMaximumSize(600, 400)
label = QLabel('Resizable Window', window)
label.setAlignment(Qt.AlignCenter)
window.show()
app.exec_()
Seguendo queste best practice, è possibile gestire efficacemente le dimensioni dei widget e creare interfacce utente facilmente adattabili.
Esempio pratico: Gestione delle dimensioni dei widget in Tkinter
In questo esempio, vediamo come gestire le dimensioni dei widget in un’applicazione Tkinter con un codice concreto.
Impostazione delle dimensioni iniziali della finestra
Prima, impostiamo le dimensioni iniziali della finestra e posizioniamo diversi widget al suo interno.
import tkinter as tk
root = tk.Tk()
root.geometry("400x300") # Imposta le dimensioni iniziali della finestra
label = tk.Label(root, text="Hello, Tkinter!", bg="lightblue")
label.pack(fill=tk.BOTH, expand=True)
button1 = tk.Button(root, text="Button 1")
button1.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
button2 = tk.Button(root, text="Button 2")
button2.pack(side=tk.RIGHT, fill=tk.BOTH, expand=True)
root.mainloop()
In questo esempio, la finestra è configurata per avere una dimensione di 400×300 pixel, e sono stati posizionati una label e due pulsanti. Il gestore pack
è utilizzato per fare in modo che i widget si adattino alla finestra.
Gestione delle dimensioni con il layout a griglia
In seguito, utilizziamo il layout a griglia per posizionare i widget in modo ordinato e gestire le loro dimensioni.
import tkinter as tk
root = tk.Tk()
root.geometry("400x300")
for i in range(3):
for j in range(3):
button = tk.Button(root, text=f"Button {i},{j}")
button.grid(row=i, column=j, sticky="nsew")
# Regola automaticamente la dimensione di righe e colonne
for i in range(3):
root.grid_columnconfigure(i, weight=1)
root.grid_rowconfigure(i, weight=1)
root.mainloop()
In questo esempio, i pulsanti sono disposti in una griglia 3×3 e le dimensioni delle righe e delle colonne vengono automaticamente regolate in base alla finestra.
Impostazione delle dimensioni minima/massima dei widget
Impostare dimensioni minima e massima per i widget garantisce che vengano ridimensionati correttamente anche quando la finestra cambia dimensione.
import tkinter as tk
root = tk.Tk()
root.geometry("400x300")
root.minsize(300, 200) # Imposta la dimensione minima
root.maxsize(600, 400) # Imposta la dimensione massima
label = tk.Label(root, text="Resizable Window", bg="lightgreen")
label.pack(fill=tk.BOTH, expand=True)
root.mainloop()
In questo esempio, la dimensione minima della finestra è impostata a 300×200 pixel, mentre la dimensione massima è di 600×400 pixel. La label si ridimensiona automaticamente in base alla finestra.
Seguendo questi esempi pratici, puoi comprendere le basi della gestione delle dimensioni dei widget in Tkinter e creare applicazioni GUI flessibili e responsive.
Esempio pratico: Gestione delle dimensioni dei widget in PyQt
In questo esempio, vediamo come gestire le dimensioni dei widget in un’applicazione PyQt, utilizzando codice concreto.
Impostazione delle dimensioni iniziali della finestra
Per prima cosa, impostiamo le dimensioni iniziali della finestra e posizioniamo diversi widget al suo interno.
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QVBoxLayout
app = QApplication([])
window = QWidget()
window.setWindowTitle('PyQt Size Management Example')
window.setGeometry(100, 100, 400, 300) # Imposta le dimensioni iniziali della finestra
layout = QVBoxLayout()
label = QLabel('Hello, PyQt!', window)
label.setStyleSheet("background-color: lightblue;")
layout.addWidget(label)
button1 = QPushButton('Button 1', window)
layout.addWidget(button1)
button2 = QPushButton('Button 2', window)
layout.addWidget(button2)
window.setLayout(layout)
window.show()
app.exec_()
In questo esempio, la finestra ha una dimensione iniziale di 400×300 pixel e contiene una label e due pulsanti, disposti verticalmente tramite il layout QVBoxLayout
.
Gestione delle dimensioni con il layout a griglia
Successivamente, utilizziamo il layout a griglia per posizionare i widget e gestire le loro dimensioni.
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QGrid
Layout
app = QApplication([])
window = QWidget()
window.setWindowTitle('PyQt Grid Layout Example')
window.setGeometry(100, 100, 400, 300)
layout = QGridLayout()
for i in range(3):
for j in range(3):
button = QPushButton(f'Button {i},{j}', window)
layout.addWidget(button, i, j)
window.setLayout(layout)
window.show()
app.exec_()
In questo esempio, i pulsanti sono disposti in una griglia 3×3, e le loro dimensioni sono gestite dal layout a griglia.
Impostazione delle dimensioni minima/massima
Impostare dimensioni minima e massima per i widget garantisce che vengano ridimensionati correttamente anche quando la finestra cambia dimensione.
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
app = QApplication([])
window = QWidget()
window.setWindowTitle('PyQt Min/Max Size Example')
window.setGeometry(100, 100, 400, 300)
window.setMinimumSize(300, 200) # Imposta la dimensione minima
window.setMaximumSize(600, 400) # Imposta la dimensione massima
label = QLabel('Resizable Window', window)
label.setAlignment(Qt.AlignCenter)
label.setStyleSheet("background-color: lightgreen;")
layout = QVBoxLayout()
layout.addWidget(label)
window.setLayout(layout)
window.show()
app.exec_()
In questo esempio, la finestra ha una dimensione minima di 300×200 pixel e una dimensione massima di 600×400 pixel. La label si ridimensiona automaticamente in base alla finestra.
Questi esempi pratici ti aiuteranno a comprendere i fondamenti della gestione delle dimensioni dei widget in PyQt e a creare applicazioni GUI flessibili e responsive.
Problemi comuni nella gestione delle dimensioni e soluzioni
Durante la gestione delle dimensioni dei widget, possono sorgere vari problemi. Qui esaminerò alcune problematiche comuni e le relative soluzioni.
Problema 1: I widget di dimensioni fisse rompono il layout
I widget con dimensioni fisse possono rompere il layout quando la finestra viene ridimensionata. Questo problema può essere risolto utilizzando dimensioni relative e ridimensionamento automatico.
Soluzione
Utilizza dimensioni relative e configura i widget affinché si adattino automaticamente alla finestra principale. In Tkinter, puoi utilizzare l’opzione expand
con pack
o grid
, mentre in PyQt puoi utilizzare QSizePolicy
.
Problema 2: Le dimensioni minime/massime dei widget
Se i widget superano le dimensioni massime o scendono sotto le dimensioni minime, l’interfaccia potrebbe diventare difficile da usare.
Soluzione
Imposta correttamente le dimensioni minime e massime dei widget per garantire che vengano ridimensionati correttamente durante il ridimensionamento della finestra.
Problema 3: Implementare il design responsive è difficile
Implementare un design responsive per dispositivi e dimensioni di schermo diversi può risultare complicato, e alcuni widget potrebbero non ridimensionarsi correttamente.
Soluzione
Utilizza gestori di layout che si adattino automaticamente alla finestra principale e sfrutta gli eventi di ridimensionamento per regolare dinamicamente le dimensioni dei widget.
Problema 4: Problemi di scaling su schermi ad alta risoluzione
Sui display ad alta risoluzione, i widget potrebbero apparire più piccoli rispetto alle dimensioni previste.
Soluzione
Configura il framework GUI per supportare display ad alta risoluzione, come in PyQt dove puoi abilitare il QApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
per attivare lo scaling ad alta risoluzione.
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
from PyQt5.QtCore import Qt
app = QApplication([])
app.setAttribute(Qt.AA_EnableHighDpiScaling, True) # Abilita il ridimensionamento DPI elevato
window = QWidget()
window.setGeometry(100, 100, 400, 300)
label = QLabel('High DPI Scaling Example', window)
label.setAlignment(Qt.AlignCenter)
window.show()
app.exec_()
Problema 5: Calcoli lenti del layout
Con layout complessi o un numero elevato di widget, i calcoli per il ridimensionamento della finestra potrebbero essere lenti.
Soluzione
Scegli un gestore di layout efficiente ed evita calcoli non necessari. Considera la possibilità di semplificare i layout o ridurre il numero di widget.
Applicando queste soluzioni, è possibile risolvere i problemi comuni nella gestione delle dimensioni dei widget e creare applicazioni GUI stabili e facili da usare.
Esempio avanzato: Design responsive per GUI
Il design responsive per GUI è importante per garantire che le applicazioni siano utilizzabili su dispositivi e risoluzioni schermo diversi. In questo esempio, vedremo come progettare una GUI responsive in modo pratico.
Design responsive con Tkinter
Per progettare una GUI responsive in Tkinter, è necessario fare in modo che i widget si ridimensionino automaticamente in base alla finestra. Ecco un esempio di come farlo.
import tkinter as tk
root = tk.Tk()
root.geometry("600x400") # Imposta le dimensioni iniziali della finestra
frame = tk.Frame(root)
frame.pack(fill=tk.BOTH, expand=True)
label = tk.Label(frame, text="Responsive Label", bg="lightblue")
label.pack(fill=tk.BOTH, expand=True)
button1 = tk.Button(frame, text="Button 1")
button1.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
button2 = tk.Button(frame, text="Button 2")
button2.pack(side=tk.RIGHT, fill=tk.BOTH, expand=True)
root.mainloop()
In questo esempio, i widget si ridimensionano automaticamente quando la finestra viene ridimensionata, utilizzando le opzioni fill
e expand
nel gestore pack
.
Design responsive con PyQt
Per progettare una GUI responsive in PyQt, si utilizzano i gestori di layout per fare in modo che i widget si ridimensionino automaticamente in base alla finestra.
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QHBoxLayout
app = QApplication([])
window = QWidget()
window.setWindowTitle('Responsive PyQt Example')
window.setGeometry(100, 100, 600, 400) # Imposta le dimensioni iniziali della finestra
main_layout = QVBoxLayout(window)
top_layout = QHBoxLayout()
bottom_layout = QHBoxLayout()
label = QPushButton('Responsive Label', window)
label.setStyleSheet("background-color: lightblue;")
top_layout.addWidget(label)
button1 = QPushButton('Button 1', window)
bottom_layout.addWidget(button1)
button2 = QPushButton('Button 2', window)
bottom_layout.addWidget(button2)
main_layout.addLayout(top_layout)
main_layout.addLayout(bottom_layout)
window.setLayout(main_layout)
window.show()
app.exec_()
In questo esempio, vengono utilizzati i layout QVBoxLayout
e QHBoxLayout
per disporre i widget in modo responsivo.
Best practice per il design responsive
Alcune best practice per il design responsive includono:
1. Usa layout flessibili
Imposta le dimensioni e la posizione dei widget in modo relativo, evitando dimensioni fisse. Usa i gestori di layout per creare layout dinamici che si adattino alle dimensioni della finestra.
2. Imposta dimensioni minime e massime
Imposta dimensioni minime e massime per i widget per evitare che diventino troppo piccoli o troppo grandi, migliorando la coerenza del layout e l’usabilità.
3. Usa query media
Prendi spunto dal design responsive per il web e crea condizioni per adattare il layout o lo stile a seconda delle dimensioni o della risoluzione del display. Ciò consente un design più flessibile.
Conclusioni
Il design responsive per GUI è fondamentale per migliorare l’esperienza utente. Utilizzando Tkinter o PyQt, puoi progettare interfacce dinamiche che si adattano a diversi dispositivi e dimensioni di schermo, creando applicazioni flessibili e facili da usare.
Esercizi: Gestione delle dimensioni dei widget
In questa sezione sono proposti degli esercizi per approfondire la gestione delle dimensioni dei widget e acquisire competenze pratiche.
Esercizio 1: Risposta al ridimensionamento della finestra in Tkinter
Crea un’applicazione Tkinter che soddisfi i seguenti requisiti:
- Imposta la dimensione iniziale della finestra su 600×400 pixel.
- Quando la finestra viene ridimensionata, i widget all’interno (frame, label e pulsanti) devono ridimensionarsi automaticamente.
import tkinter as tk
root = tk.Tk()
root.geometry("600x400") # Imposta le dimensioni iniziali della finestra
frame = tk.Frame(root)
frame.pack(fill=tk.BOTH, expand=True)
label = tk.Label(frame, text="Resizable Label", bg="lightblue")
label.pack(fill=tk.BOTH, expand=True)
button = tk.Button(frame, text="Resizable Button")
button.pack(fill=tk.BOTH, expand=True)
root.mainloop()
Imposta il codice per fare in modo che i widget si ridimensionino correttamente.
Esercizio 2: Layout a griglia e ridimensionamento in PyQt
Crea un’applicazione PyQt che soddisfi i seguenti requisiti:
- Imposta la dimensione iniziale della finestra su 600×400 pixel.
- Disposizione dei pulsanti in una griglia 3×3, con ridimensionamento automatico in base alla finestra.
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QGridLayout
app = QApplication([])
window = QWidget()
window.setWindowTitle('Grid Layout Example')
window.setGeometry(100, 100, 600, 400)
layout = QGridLayout()
for i in range(3):
for j in range(3):
button = QPushButton(f'Button {i},{j}', window)
layout.addWidget(button, i, j)
window.setLayout(layout)
window.show()
app.exec_()
Imposta il codice per fare in modo che i pulsanti si ridimensionino automaticamente in base alla finestra.
Esercizio 3: Impostazione delle dimensioni minime e massime
Crea un’applicazione che soddisfi i seguenti requisiti:
- Imposta la dimensione minima della finestra a 300×200 pixel e la dimensione massima a 800×600 pixel.
- La label deve ridimensionarsi automaticamente con la finestra.
Per Tkinter:
import tkinter as tk
root = tk.Tk()
root.geometry("600x400")
root.minsize(300, 200)
root.maxsize(800, 600)
label = tk.Label(root, text="Resizable Window", bg="lightgreen")
label.pack(fill=tk.BOTH, expand=True)
root.mainloop()
Per PyQt:
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout
from PyQt5.QtCore import Qt
app = QApplication([])
window = QWidget()
window.setWindowTitle('Min/Max Size Example')
window.setGeometry(100, 100, 600, 400)
window.setMinimumSize(300, 200)
window.setMaximumSize(800, 600)
label = QLabel('Resizable Window', window)
label.setAlignment(Qt.AlignCenter)
label.setStyleSheet("background-color: lightgreen;")
layout = QVBoxLayout()
layout.addWidget(label)
window.setLayout(layout)
window.show()
app.exec_()
Usa questo codice per configurare la finestra con dimensioni minime e massime, e fare in modo che la label si ridimensioni automaticamente con la finestra.
Conclusioni
La gestione delle dimensioni dei widget è un aspetto cruciale nella programmazione GUI in Python. In questo articolo abbiamo esplorato come configurare le dimensioni iniziali, il ridimensionamento e il ridimensionamento automatico dei widget usando Tkinter e PyQt. Abbiamo anche visto alcune soluzioni a problemi comuni e le best practice per un design responsive. Con gli esempi pratici, ora puoi applicare queste tecniche per creare applicazioni GUI più efficaci e user-friendly.