Ich habe WxPython GUI-Programm, das eine Eingabe vom Benutzer zur Ausführung erhalten muss. Ich möchte den Dialog vor dem Hauptrahmen anzeigen, die Eingabe speichern, den Dialog schließen und dann das Hauptprogramm ausführen. Im Moment benutze ich stattdessen raw_input. Dies ist mein Code:Holen Sie sich Benutzereingaben aus einem Dialogfeld vor dem Anzeigen des Mainframes
import wx
import wx.lib.iewin as iewin
import subprocess
class MyBrowser(wx.Frame):
def __init__(self, parent, id):
wx.Frame.__init__(self, parent, id,
style=wx.DEFAULT_FRAME_STYLE | wx.STAY_ON_TOP)
self.transparency = 255
sizer = wx.BoxSizer(wx.VERTICAL)
self.browser = iewin.IEHtmlWindow(self)
sizer.Add(self.browser, 1, wx.EXPAND, 10)
self.Bind(wx.EVT_CHAR_HOOK, self.onKey)
def SetTransparent(self, value):
self.transparency = value
wx.Frame.SetTransparent(self, value)
def GetTransparent(self):
return self.transparency
def decreaseTransparency(self, e):
self.SetTransparent(self.GetTransparent() - 10)
def increaseTransparency(self, e):
self.SetTransparent(self.GetTransparent() + 10)
def onKey(self, evt):
if evt.GetKeyCode() == wx.WXK_DOWN:
self.decreaseTransparency(self)
elif evt.GetKeyCode() == wx.WXK_UP:
self.increaseTransparency(self)
else:
evt.Skip()
def load(self,uri):
self.browser.Navigate(uri)
#starts livestreamer process
response = raw_input("Livestreamers name:\n")
livestreamer = "livestreamer twitch.tv/"
host = subprocess.Popen(['livestreamer', 'twitch.tv/'+response, 'best'], stdout=subprocess.PIPE)
if __name__ == '__main__':
app = wx.App()
dialog = MyBrowser(None, -1)
dialog.browser.Navigate("https://www.twitch.tv/" + response+ "/chat?popout=")
dialog.Show()
app.MainLoop()
host.communicate()[0]
Dies ist, was ich im Sinn haben: dialog example
Es tut mir leid für meine Unwissenheit, aber wie rufe ich self.dialog.GetValue() von außerhalb dieser Klasse? Das ist eine großartige Antwort, aber ich kann es nicht integrieren. – stanbsl
bearbeitet meine Antwort, um Ihnen zu zeigen, wie man es außerhalb der Klasse verwendet – BretD
Danke, Alter, es hat perfekt funktioniert! – stanbsl