내 프로젝트의 목표를 달성하고 모듈을 창 응용 프로그램에 단추로 연결하려고합니다. 지금까지 누락 된 것이 무엇인지 모르겠지만 뭔가 잘못되었습니다. 프로그램이 실행 중일 때 메인 프레임이 충돌하고 응답이 없으므로 Shell 출력이 작동하지만 아무것도 입력 할 수 없기 때문에 ... 내가 정확히 부분을 잘못 알고 있기 때문에 당신에게 모든 코드를 보여줍니다. 보아 생성자를 사용하여 프레임을 만드는 시간을 절약했습니다. 출발 응용 프로그램이 해당 같습니다잘못 제작되었거나 루프가 비정상 종료 되었습니까?
앱 1 :
import wx
import Frame1
modules ={'Frame1': [1, 'Main frame of Application', u'Frame1.py'],
u'botcordxy': [0, u'x, y values', u'botcordxy.py']}
class BoaApp(wx.App):
def OnInit(self):
self.main = Frame1.create(None)
self.main.Show()
self.SetTopWindow(self.main)
return True
def main():
application = BoaApp(0)
application.MainLoop()
if __name__ == '__main__':
main()
내가 확실하지 오전하지만 난 어떤 위에있는 것은 올바른 생각, 저를하지 않을 경우 말한다.
Frame1.py :
import wx
def create(parent):
return Frame1(parent)
[wxID_FRAME1, wxID_FRAME1BUTTON1, wxID_FRAME1PANEL1,
] = [wx.NewId() for _init_ctrls in range(3)]
class Frame1(wx.Frame):
def _init_ctrls(self, prnt):
wx.Frame.__init__(self, id=wxID_FRAME1, name=u'Frame1', parent=prnt,
pos=wx.Point(-1, 291), size=wx.Size(250, 480),
style=wx.DEFAULT_FRAME_STYLE, title=u'ZulithBot')
self.SetClientSize(wx.Size(242, 446))
self.Bind(wx.EVT_BUTTON, self.Firefox, id=wxID_FRAME1BUTTON1)
self.panel1 = wx.Panel(id=wxID_FRAME1PANEL1, name='panel1', parent=self,
pos=wx.Point(0, 0), size=wx.Size(242, 446),
style=wx.TAB_TRAVERSAL)
self.button1 = wx.Button(id=wxID_FRAME1BUTTON1,
label=u'Start Firefox', name='button1', parent=self.panel1,
pos=wx.Point(80, 24), size=wx.Size(88, 23), style=0)
def Firefox(self, event):
import botcordxy
def __init__(self, parent):
self._init_ctrls(parent)
그리고 지금, 마지막 :
botcordxy.py 마지막 부분에 관해서는
import selenium
from selenium import webdriver
import time
##The name of website has been changed just in care.
driver = webdriver.Firefox()
driver.get('http://example.com//')
def repeat():
while 1 == 1:
botloc = driver.find_element_by_id('botloc').text
botX,botY = map(int,botloc.split(','))
print botX
print botY
print botloc
def checker():
if driver.current_url == 'http://logged.example.com//':
repeat()
else:
time.sleep(5)
checker()
checker()
, 여기에 계단, 많은 문제를 시작했다 , 많은 편집, 활동에 많은 시간을 바쳤습니다 ...
프로그램을 실행하고 로그온 할 때 bdriver 브라우저는 다음 쉘 내가 얻을 원하는 값을 보여줍니다
32
59
32,59
31
59
31,59
31
58
31,58
를 통해 응용 프로그램이 여전히 파괴되도록 이상 botloc, botx 및 boty 인쇄되어 있지만 냉동, 통제는 내가 사용하지까지 ctrl + C, Frame1 완전히 사용할 수 없습니다 ... 누락 된 많은 것들이 있습니까? def 응답 루프는이 방법으로 작동 될 수 있습니까? 그 문제를 해결하도록 도와 주시겠습니까?
대단히 감사합니다. 그리고 wx.Timer에 대해서 wx.Timer로 다음과 같이 만들 수 있습니다 : if key_pressed_arrowup : div에서 botloc을 다시 업데이트 하시겠습니까? – Mezulith
@Mezulith 글쎄, 키를 누를 때마다 한 번만 업데이트를 원한다면 타이머가 필요하지 않습니다.여러분이하려고하는 것이 무엇인지는 명확하지 않지만, 일단'botloc'의 정확한 값을 얻었 으면'while' 루프에서 빠져 나올 무언가가 필요합니다. – Aya
내가 말하고자하는 바에는 completly 동의하지 않는다. wx.Timer와 Break는 내가 필요로하는 것이 무엇인가에 기반을 두어야한다. 만약 botloc = 마지막 botloc이 깨진다면, 확실치 않지만 botloc 값으로 저장소를 생성해야한다고 생각한다. , 화살표 키를 누른 후 이벤트를 다시 시작하십시오. 그러나 이상한 것은'botX, botY = map (int, botloc.split (','))ValueError : 기수 10 인 int()에 대한 리터럴이 잘못되었습니다. : '''그리고 수동으로 쉘에서 repeat()를 실행해야합니다. 어떻게 수정해야합니까? – Mezulith