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) 

  • Wie kann ich erkennen, wann ein Button in Tkinter freigegeben wird?
  • Wie kann ich ein Fenster auf dem Bildschirm in Tkinter zentrieren?
  • In Tkinter Wie entferne ich Fokus aus einem Widget?
  • Was macht overrideredirect?
  • Wie erstellen Sie eine TKinter GUI Stop-Taste, um eine Endlosschleife zu brechen?
  • Vollbildmodus auf Tkinter anzeigen
  • So erstellen Sie einen mehrzeiligen Eintrag mit tkinter?
  • Füge ein Bild zu Tkinter Entry hinzu
  • 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.