Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在GTK中,是否有一种简单的方法可以按任意数量缩放所有小部件?_Python_User Interface_Gtk_Pygtk - Fatal编程技术网

Python 在GTK中,是否有一种简单的方法可以按任意数量缩放所有小部件?

Python 在GTK中,是否有一种简单的方法可以按任意数量缩放所有小部件?,python,user-interface,gtk,pygtk,Python,User Interface,Gtk,Pygtk,我希望我的小部件看起来和现在一样,只是要小一些。它包括按钮、标签、文本、图像等。有没有办法只说“将其缩放为大小的一半”,并让GTK完成所有必要的图像处理、小部件大小调整等?如果没有,最简单的方法是什么?没有内置的方法可以做到这一点。要做到这一点,你必须考虑什么是“占用空间”在你的UI,以及如何减少它。 如果您的UI主要是文本和图像,则可以使用较小的字体大小,然后按适当的百分比缩小所有图像。当小部件显示的文本和图像缩小时,小部件大小将自动缩小(除非您做过硬编码高度/宽度、使用GtkFixed等不好

我希望我的小部件看起来和现在一样,只是要小一些。它包括按钮、标签、文本、图像等。有没有办法只说“将其缩放为大小的一半”,并让GTK完成所有必要的图像处理、小部件大小调整等?如果没有,最简单的方法是什么?

没有内置的方法可以做到这一点。要做到这一点,你必须考虑什么是“占用空间”在你的UI,以及如何减少它。 如果您的UI主要是文本和图像,则可以使用较小的字体大小,然后按适当的百分比缩小所有图像。当小部件显示的文本和图像缩小时,小部件大小将自动缩小(除非您做过硬编码高度/宽度、使用GtkFixed等不好的事情)

棘手的部分将是确定字体点大小和图像比例之间的关系

编辑:


.

没有内置的方法可以做到这一点。要做到这一点,你必须考虑什么是“占用空间”在你的UI,以及如何减少它。 如果您的UI主要是文本和图像,则可以使用较小的字体大小,然后按适当的百分比缩小所有图像。当小部件显示的文本和图像缩小时,小部件大小将自动缩小(除非您做过硬编码高度/宽度、使用GtkFixed等不好的事情)

棘手的部分将是确定字体点大小和图像比例之间的关系

编辑:


.

我不建议从用户界面更改主题,但如果需要,您可以这样做,使用自定义gtkrc可以帮助您更改字体和按钮的绘制方式,主要是因为xthickness和ythickness

 import gtk
 file = "/path/to/the/gtkrc"
 gtk.rc_parse(file)
 gtk.rc_add_default_file(file)
 gtk.rc_reparse_all()
定制gtkrc可能如下所示:

gtk_color_scheme = "fg_color:#ECE9E9;bg_color:#ECE9E9;base_color:#FFFFFF;text_color:#000000;selected_bg_color:#008DD7;selected_fg_color:#FFFFFF;tooltip_bg_color:#000000;tooltip_fg_color:#F5F5B5"
style "theme-fixes" {

  fg[NORMAL]        = @fg_color
  fg[PRELIGHT]      = @fg_color
  fg[SELECTED]      = @selected_fg_color
  fg[ACTIVE]        = @fg_color
  fg[INSENSITIVE]   = darker (@bg_color)

  bg[NORMAL]        = @bg_color
  bg[PRELIGHT]      = shade (1.02, @bg_color)
  bg[SELECTED]      = @selected_bg_color
  bg[INSENSITIVE]   = @bg_color
  bg[ACTIVE]        = shade (0.9, @bg_color)

  base[NORMAL]      = @base_color
  base[PRELIGHT]    = shade (0.95, @bg_color)
  base[ACTIVE]      = shade (0.9, @selected_bg_color)
  base[SELECTED]    = @selected_bg_color
  base[INSENSITIVE] = @bg_color

  text[NORMAL]      = @text_color
  text[PRELIGHT]    = @text_color
  text[ACTIVE]      = @selected_fg_color
  text[SELECTED]    = @selected_fg_color
  text[INSENSITIVE] = darker (@bg_color)

  GtkTreeView::odd_row_color  = shade (0.929458256, @base_color)
  GtkTreeView::even_row_color = @base_color
  GtkTreeView::horizontal-separator = 12

      font_name = "Helvetica World 7"
 }
 class "*" style "theme-fixes"

我不推荐从用户界面更改主题,但如果需要,您可以这样做,使用自定义gtkrc可以帮助您更改字体和按钮的绘制方式,主要是因为xthickness和ythickness

 import gtk
 file = "/path/to/the/gtkrc"
 gtk.rc_parse(file)
 gtk.rc_add_default_file(file)
 gtk.rc_reparse_all()
定制gtkrc可能如下所示:

gtk_color_scheme = "fg_color:#ECE9E9;bg_color:#ECE9E9;base_color:#FFFFFF;text_color:#000000;selected_bg_color:#008DD7;selected_fg_color:#FFFFFF;tooltip_bg_color:#000000;tooltip_fg_color:#F5F5B5"
style "theme-fixes" {

  fg[NORMAL]        = @fg_color
  fg[PRELIGHT]      = @fg_color
  fg[SELECTED]      = @selected_fg_color
  fg[ACTIVE]        = @fg_color
  fg[INSENSITIVE]   = darker (@bg_color)

  bg[NORMAL]        = @bg_color
  bg[PRELIGHT]      = shade (1.02, @bg_color)
  bg[SELECTED]      = @selected_bg_color
  bg[INSENSITIVE]   = @bg_color
  bg[ACTIVE]        = shade (0.9, @bg_color)

  base[NORMAL]      = @base_color
  base[PRELIGHT]    = shade (0.95, @bg_color)
  base[ACTIVE]      = shade (0.9, @selected_bg_color)
  base[SELECTED]    = @selected_bg_color
  base[INSENSITIVE] = @bg_color

  text[NORMAL]      = @text_color
  text[PRELIGHT]    = @text_color
  text[ACTIVE]      = @selected_fg_color
  text[SELECTED]    = @selected_fg_color
  text[INSENSITIVE] = darker (@bg_color)

  GtkTreeView::odd_row_color  = shade (0.929458256, @base_color)
  GtkTreeView::even_row_color = @base_color
  GtkTreeView::horizontal-separator = 12

      font_name = "Helvetica World 7"
 }
 class "*" style "theme-fixes"

在编写了一个100%可伸缩的gtk应用程序之后,我所做的是将自己限制在gdk_draw_line和gdk_draw_rectangle上,这样很容易扩展自己。文本通过gdk_绘制线“完成”。(有关“完成”的某些较低值,请参阅:


我猜这对你没有任何帮助。

在编写了一个100%可伸缩的gtk应用程序之后,我所做的只是将自己限制在gdk_draw_line和gdk_draw_rectangle上,然后很容易对自己进行伸缩。文本通过gdk_绘制线“完成”。(有关“完成”的某些较低值,请参阅:


我猜这对你没有任何帮助。

一些gtk开发人员已经对分辨率独立性进行了研究,这里有一个非常大的补丁将其引入gtk。然而,这个补丁已经有一年的历史了,现在还不清楚它将如何/何时/是否被包括在内:(最后的截图)


一些gtk开发人员已经着手解决分辨率独立性问题,下面是一个更新,其中包含一个非常大的补丁,将其引入gtk。然而,这个补丁已经有一年的历史了,现在还不清楚它将如何/何时/是否被包括在内:(最后的截图)


谢谢你的提示。谢天谢地,我没有做坏事。如何缩小字体大小?谢谢你的提示。谢天谢地,我没有做坏事。如何缩小字体大小?不,我有GUI应用程序,不是游戏。顺便说一句,像SDL这样的游戏不是更好吗?(或者可能我误解了你的程序)对于那个游戏来说可能不是更好,只是不同而已。我知道gtk,但不知道SDL,我需要做的就是能够画线。如果SDL的线描实现比gtk更好,我会感到惊讶——他们可能都只是做xlib调用——特别是我不希望任何游戏y硬件特定的x-windows绕过SDL可能提供的东西(IDK,如果没有的话),我希望它像“正常”程序一样与x一起工作,我知道gtk会帮我解决的。Blender的界面是可伸缩的,它采用了类似的方法——自定义呈现UI。不,我有一个GUI应用程序,而不是游戏。顺便说一句,像SDL这样的游戏不是更好吗?(或者可能我误解了你的程序)对于那个游戏来说可能不是更好,只是不同而已。我知道gtk,但不知道SDL,我需要做的就是能够画线。如果SDL的线描实现比gtk更好,我会感到惊讶——他们可能都只是做xlib调用——特别是我不希望任何游戏y硬件特定的x-windows绕过SDL可能提供的东西(IDK,如果没有的话),我希望它像“正常”程序一样与x一起工作,我知道gtk会帮我解决的。Blender的界面是可伸缩的,它采用了类似的方法——自定义呈现的UI。我尝试过这样做,并将文本颜色更改为“FF0000”,以查看它是否有任何效果,但没有。我是否也必须从我的应用程序中设置主题?请注意,设置默认文件导致外观改变,我没有给出绝对路径。它似乎有效(虽然这个特定的方案现在看起来很难看..而且文本颜色似乎不是黑色..但我会解决它)只需更改以下内容:fg#u颜色:#ECE9E9此:fg#u颜色:#000000。如果你不想弄乱颜色,就跳过它们。我试着这么做,我把文本颜色改成“FF0000”,看看它是否有效果,但没有。我是否也必须从我的应用程序中设置主题?请注意,设置默认文件导致外观改变,我没有给出绝对路径。它似乎有效(虽然这个特定的方案现在看起来很难看..而且文本颜色似乎不是黑色..但我会解决它)只需更改以下内容:fg#u颜色:#ECE9E9此:fg#u颜色:#000000。如果你不想弄乱颜色,就跳过它们。如果我能让它工作,那就太好了——谢谢你的引导!我觉得这太好了