Как я могу успешно запустить OnButton во время запуска? - PullRequest
0 голосов
/ 20 февраля 2020
import wx

class MyForm(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY, "Test")
        panel = wx.Panel(self, wx.ID_ANY)
        #Button is created; binded to onButton
        button = wx.Button(panel, id=wx.ID_ANY, label="Press Me")
        button.Bind(wx.EVT_BUTTON, self.onButton)

    def onButton(self,EVT_BUTTON):
        print("Hello world!")

if __name__ == "__main__":
    app = wx.App(False)
    frame = MyForm()
    frame.Show()
    #Runs Button command on startup
    MyForm.onButton()

Я хочу, чтобы onButton () запускался при запуске и мог запускаться при нажатии кнопки wx.Button. К сожалению, возникает такая ошибка: > Ошибка типа: onButton () отсутствует 2 обязательных позиционных аргумента: 'self' и 'EVT_BUTTON'

1 Ответ

0 голосов
/ 20 февраля 2020

Это немного сложнее. Я предполагаю, что вы новичок в программировании. Если так, я предлагаю, вы изучите некоторые основы. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *) * * * * * * * * * * * * * * Теперь, чтобы запустить программу wx Python, вы должны запустить событие l oop, так что ваша программа должна иметь примерно так:

if __name__ == "__main__":
    app = wx.App(False)
    frame = MyForm()
    frame.Show()
    app.MainLoop()

Вы определили свою функцию на кнопке с 2 параметрами. Поэтому вы должны указать их при вызове функции. Первый вместо себя, и это кадр. Второй называется EVT_BUTTON (и присвоение этому имени переменной говорит о том, что вы на самом деле не понимаете этих концепций, и именно поэтому я предложил вам начать с изучения основ).

Таким образом, вы можете позвонить

frame.OnButton(None)

перед вызовом app.MainL oop () и код будет запущен. Но этого, вероятно, недостаточно.

...