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) 

  • Tkinter Popup Keyboard Bibliothek
  • Tkinter Import ohne *?
  • NameError: globaler Name 'END' ist nicht definiert
  • Machen Sie einen Knopf offen nur ein Fenster zu einem Zeitpunkt (aktivieren Sie eine Schaltfläche durch Schließen eines Toplevel-Fenster)
  • Erstellen eines Popup-Meldungsfeldes mit einem Eintragsfeld
  • Stoppen Sie das Text-Widget beim Scrollen, wenn der Inhalt geändert wird
  • Python Tkinter - Set Entry Rasterbreite 100%
  • Wie man das ganze Fenster zu einem Platz auf dem Bildschirm bewegt (Tkinter, Python3)
  • 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.