wx.EVT\u最大化阻止退出全屏

2024-10-01 15:48:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个框架和一个收音机框切换全屏。当用户单击“最大化”按钮时,框架将全屏显示。但是,如果我使用最大化按钮,单选框将无法恢复窗口。如果我用收音盒去全屏,就可以恢复窗口了。你知道吗

import wx


class FSWindow(wx.Frame):
  def __init__(self, *args, **kwargs):
  wx.Frame.__init__(self, *args, **kwargs)
  self.SetSize((800, 600))
  self.RadioFullScreen = wx.RadioBox(self, -1, "Display", choices=["Windowed","Full Screen"])
  self.RadioFullScreen.Bind(wx.EVT_RADIOBOX, self.FS)
  self.Bind(wx.EVT_MAXIMIZE, self.OnMaximize)
  self.Sizer = None
  self.Show()

def FS(self, Event):
  if self.RadioFullScreen.GetSelection():
    self.ShowFullScreen(True)
  else:
    self.ShowFullScreen(False)

def OnMaximize(self, Event):
  self.ShowFullScreen(True) # <-- Add self.Restore() or self.Maximize(False) here
  self.RadioFullScreen.SetSelection(1)


App = wx.App()
frame =FSWindow(None, -1, "MainWindow")
App.MainLoop()

但是,如果我加上自我恢复()或自我最大化(假)在自我展示全屏(True)就像我对上面的源代码所做的评论一样,单选按钮可以工作。问题是,窗口将首先恢复之前,去全屏这是丑陋的。有什么解决办法吗?如果可能的话,也请解释为什么会这样。你知道吗

在Windows7 Professional 32位上运行Python2.7.9和WxPython 3.0.2


Tags: self框架trueappinitdefargs按钮
1条回答
网友
1楼 · 发布于 2024-10-01 15:48:57

似乎ShowFullScreen没有设置一些标志,所以事情变得不同步。你知道吗

如果我只使用Maximize/Restore,那么对我来说一切都很好,比如对代码进行如下更改。你知道吗

def FS(self, Event):
    if self.RadioFullScreen.GetSelection():
        self.Maximize()
        #self.ShowFullScreen(True, style=wx.FULLSCREEN_ALL)
        print('done fs true')
    else:
        #self.ShowFullScreen(False, style=wx.FULLSCREEN_ALL)
        self.Restore()
        print('done fs false')


def OnMaximize(self, Event):
    Event.Skip()
    self.RadioFullScreen.SetSelection(1)
    print('done max')

如果您不想在屏幕最大化时使用菜单栏等,请取消对ShowFullScreen行的注释。你知道吗

您正在处理一个“最大化”事件,大多数情况下,您希望默认行为也发生,这就是为什么我补充说事件.跳过对于OnMaximize处理程序-在本例中,这没有什么区别,因为看起来事件只有在最大化完成之后才会触发。你知道吗

相关问题 更多 >

    热门问题