Python Tkinter: OptionMenu Dropdown-Listenbreite ändern

Ich habe ein OptionMenu von Tkinter mit einem Spaltenspan von 2 erstellt. Allerdings stimmt die Dropdown-Liste / das Menü nicht mit der Breite überein, also sieht es nicht gut aus. Jede Idee, wie man mit ihrer Breite übereinstimmt?

self.widgetVar = StringVar(self.top) choices = ['', 'wire', 'register'] typeOption = OptionMenu(self.top, self.widgetVar, *choices) typeOption.grid(column = 0, columnspan = 2, row = 0, sticky = 'NSWE', padx = 5, pady = 5) 

  • Attributfehler bei der Zerstörungsmethode
  • Python Tkinter: Wie kann ich die Schriftart des Menü-Widgets ändern?
  • Löschen von bestimmten Zeilen / Spalten in einem Raster Tkinter
  • Tkinter: Identifizierung der Schaltfläche nach Zeile und Spalte
  • Was sind die Argumente für TKinter Variable Trace-Methode Rückrufe?
  • Wie kann ich Tkinter-Tasten überwachen, wenn Python beschäftigt ist?
  • Tkinter und matplotlib: Fenster, die nicht angezeigt werden, bis das Programm unter Linux schließt
  • Tkinter - einfaches Programm wird nicht aktualisiert
  • 3 Solutions collect form web for “Python Tkinter: OptionMenu Dropdown-Listenbreite ändern”

    Es gibt keine Möglichkeit, die Breite des Dropdowns zu ändern.

    Vielleicht möchten Sie das ttk.Combobox-Widget betrachten. Es hat einen anderen Blick, das sein könnte, was du suchst.

    Eine Idee ist, die rechte Seite (oder links oder beide) mit Leerzeichen zu platzieren. Dann, wenn Sie den gewählten Wert benötigen, streifen Sie ihn mit str strip . Nicht großartig, aber besser als nichts.

     from tkinter import ttk import tkinter as tk root = tk.Tk() def func(selected_item): print(repr(selected_item.strip())) max_len = 38 omvar = tk.StringVar() choices = ['Default Choice', 'whoa', 'this is a bit longer'] + ['choice'+str(i) for i in range(3)] padded_choices = [x+' '*(max_len-len(x)) for x in choices] om = ttk.OptionMenu(root, omvar, 'Default Choice', *padded_choices, command=func) om.config(width=30) om.grid(row=0, column=0, padx=20, pady=20, sticky='nsew') root.mainloop() 

    Das ist alt, aber hoffentlich ist die Antwort immer noch hilfreich.

    Die klebrigen Optionen von NSWE gehören zum tkinter-Paket. Also sollten sie nicht in Zitate sein. Versuchen

     typeOption.grid(column = 0, columnspan = 2, row = 0, sticky = N+S+W+E, padx = 5, pady = 5) 

    Was ist offensichtlich, wenn statt "von tkinter import *" hatte man

     import tkinter as tk typeOption.grid(column = 0, columnspan = 2, row = 0, sticky = tk.N+tk.S+tk.W+tk.E, padx = 5, pady = 5) 

    Dann stellen Sie sicher, dass die Spalte nicht schrumpft, indem Sie mit Minsize in der Frame-Spaltenkonfigurationsfunktion arbeiten.

    ** Anmerkung gibt es andere Kombinationen von Parametern auch eingebaut in tkinter wie NSEW aber nicht NSWE

    Python ist die beste Programmiersprache der Welt.