Frage

Ich habe TIX verwendet, um einen Combobox zu erstellen, und es verursacht einen intermittierenden Absturz, wenn der Eingabefeld leer bleibt.

Ich bin neu in Python und sehr neu für die GUI-Programmierung, also habe ich ein Beispiel verwendet, um mir Sachen zu lehren.

Wenn Sie den folgenden Beispielcode verwenden, sollten Sie in der Lage sein, einen Wert in das Eingabetaster einzugeben oder das Dropdown-Menü Formular auszuwählen, wenn Sie jedoch das Eingabefeld leer lassen und den Python zum Absturz drücken. generasacodicetagpre.

============================================= Crash-Details: generasacodicetagpre.

so

a] ist es etwas, was das Beispiel falsch macht?

b] Gibt es einen besseren Weg?

c] sollte ich tix überhaupt verwenden?

Ich habe bemerkt, dass manche Leute von TIX abscheulich scheinen und nur Tkinter verwenden. Gibt es einen Grund dafür? Soll ich TIX nicht verwenden?

++++++++++++++++++++++++++++++++++++

ok, also habe ich dies geschafft, dies zu melden, indem ich Value= '' hinzufügen kann generasacodicetagpre.

Sehr hässlich, aber hält mich an, bis jetzt abgestürzt; Bis jemand klüger mir eine bessere Antwort geben kann. Wenn der Benutzer den Leerzeichen löscht und dann 'GO' 'GO' ist, wird es wiederzuteilen.

War es hilfreich?

Lösung

I am not Tix expert, but this should fix the problem:

tkMessageBox.showinfo('info', self.combo.entry.get())

In between the lines, I would recommend using wxPython for learning GUI programming. It was great for me as a learning environment.

import wx

class MainWin(wx.Frame):
    def __init__(self, *args, **kwargs):
        wx.Frame.__init__(self, *args, **kwargs)

        self.combo = wx.ComboBox(self, choices=["Thing 1", "Thing 2"])      
        self.button = wx.Button(self, label="Go")
        self.button.Bind(wx.EVT_BUTTON, self.OnButton)

        self.sizer = wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.combo, 0, wx.EXPAND)
        self.sizer.Add(self.button, 0, wx.EXPAND)
        self.SetSizerAndFit(self.sizer)     

        self.Show()

    def OnButton(self, e):
        wx.MessageBox(self.combo.GetValue())

app = wx.App(False)
main_win = MainWin(None)
app.MainLoop()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top