PyGTK:有没有一种方法可以计算窗口的最佳大小?

发布于 2024-10-06 01:13:50 字数 90 浏览 1 评论 0原文

我的大部分 GUI 编程都是用 Java 完成的,您可以使用 .pack() 方法来设置窗口应具有的首选大小。我现在正在学习PyGTK,想知道其中是否存在这样的东西。

Most of my GUI programming was done in Java, where you could use a .pack() method that would set the preferred size the window should have. I'm learning PyGTK now and wondering if such a thing exists in it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

当爱已成负担 2024-10-13 01:13:51

您不需要 pack 方法。如果您不设置大小,窗口将调整为其最小大小。
您可以使用 window.set_size_request(-1,-1) 取消设置任何先前的大小。

You don't need a pack method. if you don't set a size, the window will adjust to its minimum size.
You can use window.set_size_request(-1,-1) to unset any previous size.

海夕 2024-10-13 01:13:51

不幸的是……据我所知没有。我使用以下技巧,使用各种 GTK 和 GDK 方法来计算应用程序启动时当前显示器的屏幕尺寸,并调整根窗口的大小以具有一定的填充比例。

请注意,rootGtkWindow< /代码>。当然,您可以为水平和垂直填充的 SCREEN_FILL 设置两个值。

SCREEN_FILL = 0.7

class MainApp(object):

    def set_initial_size(self):        
        screen = self.root.get_screen()
        monitor = screen.get_monitor_at_window(self.root.get_window())
        geom = screen.get_monitor_geometry(monitor)
        self.root.set_resize_mode(gtk.RESIZE_QUEUE)
        self.root.resize(
                         int(geom.width * SCREEN_FILL),
                         int(geom.height * SCREEN_FILL))

Unfortunately... not that I know of. I use the following trick that uses a variety of GTK and GDK methods to work out the screen size of the current monitor at app startup and resizes the root window to have a certain proportion of fill.

Note that root is a GtkWindow. You could, of course, have two values for SCREEN_FILL for horizontal and vertical fill.

SCREEN_FILL = 0.7

class MainApp(object):

    def set_initial_size(self):        
        screen = self.root.get_screen()
        monitor = screen.get_monitor_at_window(self.root.get_window())
        geom = screen.get_monitor_geometry(monitor)
        self.root.set_resize_mode(gtk.RESIZE_QUEUE)
        self.root.resize(
                         int(geom.width * SCREEN_FILL),
                         int(geom.height * SCREEN_FILL))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文