鉴于以下python代码,它应该创建一个值为123的GtkAdjustment。
(显然是随机的)获得不同的价值观。值123.0
最小值1.0
或0.0
(常量,不是参数)。
#!/usr/bin/python3
from gi.repository import Gtk
adjustment = Gtk.Adjustment(123,1,200,1,10,0)
print(str(adjustment.get_value()))
发生了什么事?
编辑:以下C程序按预期运行,因此它特定于python:
#include <gtk/gtk.h>
#include <stdio.h>
int main(int argc, char *argv[]){
gtk_init (&argc, &argv);
GtkAdjustment * adjustment = gtk_adjustment_new(123.0,1.0,200.0,1.0,10.0,0.0);
printf("%f\n", gtk_adjustment_get_value(adjustment));
return 0;
}
答案 0 :(得分:3)
问题是您使用的是通用构造函数。在C术语中,它首先使用g_object_new
构造对象,然后逐个设置值。显然,这不是以确定性的顺序发生的。
更好的方法是使用关键字参数将值修复为名称
adjustment = Gtk.Adjustment(value=123, lower=1, upper=200, ...)
或使用具有固定参数顺序的实际构造函数
adjustment = Gtk.Adjustment.new(123, 1, 200, 1, 10, 0)