2

我已将此代码翻译为 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:

gtk.调整示例

谢谢

4

1 回答 1

3

gtk.Scale 对象继承自gtk.Range;您需要将 Range 属性“反转”设置为 True。

所以把它放在创建你的 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()与其使用 window.move() ,不如查看GTK Window Position Constants

于 2014-10-12T10:02:51.533 回答