Pygtk调整&垂直比例:如何反转最大/最小的光标

时间:2014-10-12 08:24:24

标签: python gtk adjustment

我已将此code翻译为python 2.7,它正在运行。 但现在我有一个问题,我无法自己解决: 我希望在顶部有100个值,在向下有0个值。怎么做?

这是我的代码:

#!/usr/bin/env python
# coding: utf8

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

class Fan():
  def destroy(self, widget, donnees=None):
    gtk.main_quit()
    exit()

  def __init__(self):
    window = gtk.Window(gtk.WINDOW_TOPLEVEL)
    window.set_title('Vertical Scales')
    window.set_border_width(10)
    window.connect("destroy", self.destroy)
    window.set_size_request(-1, 150)

    # Récupération des informations de surface d'affichage
    self.screen = window.get_screen()
    self.largeur = int(self.screen.get_width())
    self.hauteur = int(self.screen.get_height())

    window.move(self.largeur/2-150,self.hauteur/2-40)
    window.set_default_size(100, 200)

    #Adjustments
                      #value, min, max, step, pg-incr,pg-size
    adj1 = gtk.Adjustment(50, 0, 100, 1.0,  1.0,    0.0)
    adj2 = gtk.Adjustment(50, 0, 100, 1.0,  1.0,    0.0)

    scale1 = gtk.VScale(adj1)
    scale2 = gtk.VScale(adj2)

    scale1.value_pos = gtk.POS_RIGHT
    scale2.value_pos = gtk.POS_LEFT

    hbox = gtk.HBox(True, 5)
    hbox.pack_start_defaults(scale1)
    hbox.pack_start_defaults(scale2)

    window.add(hbox)
    hbox.show()
    window.show_all()

if __name__ == "__main__":

  base = Fan()
  gtk.main()

这是一个屏幕截图,我想在顶部有100个光标,在窗口底部有0个curseur:

gtk.Adjutment example

由于

1 个答案:

答案 0 :(得分:3)

gtk.Scale对象继承自gtk.Range;你需要设置Range属性"倒置"真实。

所以把它放在创建VScales的语句之后的某个地方:

scale1.set_inverted(True)
scale2.set_inverted(True)

PS。要在我的系统上运行代码,我必须将编码语句更改为

# -*- coding: latin-1 -*-

但我认为是因为Stackoverflow格式化软件对此处发布的文本所做的更改。


官方GTK +教程很好(虽然它们包含一些使用弃用代码的示例)但GTK非常大,教程不容易涵盖所有内容。您需要熟悉GTK参考手册,以及隐藏的解释方法。 :)

因此,如果您查看gtk.HScale的页面,它会链接到各种属性,包括gtk.Range属性。该链接提及"倒置"作为其中一个属性,以及页面上的其他位置,它明确地描述了set_invertedget_inverted方法。请注意,名称相同的函数是GTK中的标准设置&获取属性,所以如果你知道(或可以猜测:))一个属性名称,那么你也知道如何设置或获取它。

gtk.HScale页面还提到它继承自gtk.Scale,因此该页面也值得查看额外信息。


我刚注意到你有

self.largeur = int(self.screen.get_width())
self.hauteur = int(self.screen.get_height())

但你可以做到

self.largeur = self.screen.get_width()
self.hauteur = self.screen.get_height()

因为那些get_width()& get_height()方法都返回int

您应该查看gtk.Window.set_position()GTK Window Position Constants,而不是使用window.move()。