gpt4 book ai didi

python - 在 PyGTK 中使用 F11 切换全屏的简单方法

转载 作者:太空狗 更新时间:2023-10-30 00:23:08 24 4
gpt4 key购买 nike

我不是专业程序员,但经常使用 PyGTK 和 Cairo 进行数据可视化测试和原型(prototype)设计。

我有一个从网上获取的 PyGTK 标准模板,它执行 GTK 需要工作的“标准事情”:

import pygtk
pygtk.require('2.0')
import gtk

"""
lots of stuff
"""

if __name__ == "__main__":
mainWindow = gtk.Window()
mainWindow.set_title(some_title)
mainWindow.connect("delete-event", gtk.main_quit)
#mainWindow.set_position(gtk.WIN_POS_CENTER)
#mainWindow.fullscreen()
mainWindow.show_all()
gtk.main()

我通常看到大多数应用程序使用 F11 切换全屏,所以我想知道是否有一种简单的方法可以将此功能添加到我的脚本中。我想这可能意味着将事件信号连接到 gtk 函数或方法或类似的东西,但我的知识让我不知道该怎么做。

任何帮助将不胜感激,谢谢。 (首选链接,这样我就可以自己做作业了;o)

最佳答案

让我们从如何接听按键开始:我们需要连接到 key-press-event信号。但当然,我们需要一些东西将它连接到

这个东西应该跟踪窗口状态,所以使用连接到 window-state-event 的类是有意义的发出信号并跟踪窗口是否全屏。

所以我们需要一个对象:

  1. 跟踪特定窗口的全屏/非全屏状态,并且
  2. 检测按键事件并确定如何处理它

我们如何实际切换全屏状态?简单,使用 window.fullscreen()/window.unfullscreen()功能。

所以我们有类似的东西:

class FullscreenToggler(object):

def __init__(self, window, keysym=gtk.keysyms.F11):
self.window = window
self.keysym = keysym
self.window_is_fullscreen = False
self.window.connect_object('window-state-event',
FullscreenToggler.on_window_state_change,
self)

def on_window_state_change(self, event):
self.window_is_fullscreen = bool(
gtk.gdk.WINDOW_STATE_FULLSCREEN & event.new_window_state)

def toggle(self, event):
if event.keyval == self.keysym:
if self.window_is_fullscreen:
self.window.unfullscreen()
else:
self.window.fullscreen()

这需要一个窗口和可选的 keysym 常量(默认为 F11)。像这样使用它:

toggler = FullscreenToggler(window)
window.connect_object('key-press-event', FullscreenToggler.toggle, toggler)

注意 connect_object 的使用而不是 connect,这样我们就可以避免添加未使用的参数。

旁注:如果有一种简单的方法来检查窗口是否全屏,我们可以避免这种基于类的方法并使用一个函数,该函数执行如下操作:

def fullscreen_toggler(window, event, keysym=gtk.keysyms.F11):
if event.keyval == keysym:
fullscreen = bool(
gtk.gdk.WINDOW_STATE_FULLSCREEN &
window.get_property('window-state'))
if fullscreen:
window.unfullscreen()
else:
window.fullscreen()

……然后……

window.connect('key-press-event', fullscreen_toggler)

但我找不到它的属性。

关于python - 在 PyGTK 中使用 F11 切换全屏的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5234434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com