Есть ли возможность открыть wx.message_dialog поверх браузера Chrome, который открывается селеном? - PullRequest
0 голосов
/ 19 июня 2019

я пытаюсь открыть chrom и затем запрашивать у пользователя закрытие chrome, поэтому я попытался сделать это с помощью wx, но по некоторым причинам, которые я не знаю, SetWindowStyle (wx.STAY_ON_TOP) не работает, когда я использую селен.

Я пытался создать wx.message_dialog, используя флаг: style = wx.STAY_ON_TOP но это не работает, поэтому я попытался также изменить стиль окна с помощью SetWindowStyle (wx.STAY_ON_TOP) но все равно не работает

import wx
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options


class MyFrame(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, -1, title = "ffffffff")
        self.options = Options()
        self.options.add_argument("--start-fullscreen")
        self.driver = None
        panel = wx.Panel(self)
        no_resize = wx.DEFAULT_FRAME_STYLE & ~ (wx.RESIZE_BORDER | wx.MAXIMIZE_BOX)
        self.SetWindowStyle(no_resize)
        button = wx.Button(panel, -1, "Show MessageDialog", (50,50))
        self.Bind(wx.EVT_BUTTON, self.OnButton)
        self.Show(True)


    def OnButton(self, event):

        self.driver = webdriver.Chrome(chrome_options=self.options, executable_path=r'chromedriver.exe')
        self.driver.get('http://127.0.0.1'+':5000')
        time.sleep(3)
        self.SetWindowStyle(wx.STAY_ON_TOP)
        stopBox = wx.MessageDialog(self , "do you want to stop","stop controling", style=wx.YES | wx.NO | wx.ICON_INFORMATION | wx.STAY_ON_TOP)
        stopBoxAns = stopBox.ShowModal()
        if stopBoxAns == 5103:
            stopBox.Destroy()
            no_resize = wx.DEFAULT_FRAME_STYLE & ~ (wx.RESIZE_BORDER | wx.MAXIMIZE_BOX)
            self.SetWindowStyle(no_resize)
            return 1
        if stopBoxAns == 5104:
            stopBox.Destroy()
            no_resize = wx.DEFAULT_FRAME_STYLE & ~ (wx.RESIZE_BORDER | wx.MAXIMIZE_BOX)
            self.SetWindowStyle(no_resize)
        return 2

if __name__ == "__main__":

    app = wx.App()
    MyFrame()
    app.MainLoop()

1 Ответ

0 голосов
/ 19 июня 2019

Код ниже ведет себя в Linux.
Как я упоминал ранее, STAY_ON_TOP содержит предупреждение о том, что он «в настоящее время реализован только под MSW и GTK», и вы не сказали, какая у вас ОС.

import wx

class MyFrame(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, -1, title = "ffffffff")
        panel = wx.Panel(self)
        self.no_resize = wx.DEFAULT_FRAME_STYLE & ~ (wx.RESIZE_BORDER | wx.MAXIMIZE_BOX)
        self.SetWindowStyle(self.no_resize)
        button = wx.Button(panel, -1, "Show MessageDialog", (50,50))
        self.Bind(wx.EVT_BUTTON, self.OnButton)
        self.Show(True)

    def OnButton(self, event):
        wx.LaunchDefaultBrowser('https://wxpython.org/')
        #self.SetWindowStyle(wx.STAY_ON_TOP)
        stopBox = wx.MessageDialog(self , "do you want to stop","stop controling", style=wx.YES | wx.NO | wx.ICON_INFORMATION | wx.STAY_ON_TOP)
        stopBoxAns = stopBox.ShowModal()
        ret_value = 0
        if stopBoxAns == wx.ID_YES:
            ret_value = 1
        if stopBoxAns == wx.ID_NO:
            ret_value = 2
        stopBox.Destroy()
        self.SetWindowStyle(self.no_resize)
        return ret_value

if __name__ == "__main__":

    app = wx.App()
    MyFrame()
    app.MainLoop()
...