Cocoa滑块,带整数值

时间:2010-08-15 13:27:17

标签: cocoa macos slider

我正在尝试在我的mac应用程序中使用水平滑块,默认情况下幻灯片值是浮点数,因为我需要再次将值显示为标签中的文本(使用用户默认值绑定),所以是一种使滑块输出整数而不是浮点数的方法吗?

4 个答案:

答案 0 :(得分:3)

你不能让滑块不考虑浮点,但你可以让它只给你整数。将其刻度标记的数量设置为((最大值 - 最小值)+ 1),并将其设置为仅在刻度线上停止。

答案 1 :(得分:2)

仅强制执行整数值的另一种方法是将滑块绑定到自定义控制器对象,并在该对象中,为控制器的属性实现validate<Key>:error:方法(将属性名称替换为“&lt;密钥&gt;”中)。在该验证方法中,从您收到的NSNumber对象中取消编号,根据需要对数字进行舍入,将其重新打包,并将新对象替换为验证值。 (有关详细信息,请参阅the docs。)

这会使保存用户默认值的值变得复杂;您必须在自定义控制器的属性设置器中执行此操作。

答案 2 :(得分:1)

另一种方式(因为你似乎主要用值的显示来表示)将在你的标签中使用NSNumberFormatter(一个NSTextField)。只需将数字格式器拖到标签上,然后将其配置为显示整数。它甚至会为你而战。

答案 3 :(得分:0)

我不确定您对绑定的具体使用方式,但是from matplotlib import gridspec from matplotlib import pyplot as plt import numpy as np x = np.linspace(0,2, 101) y1 = 3*np.cos(x*np.pi) y2 = np.cos(x*np.pi) ylim1 = -3,3 ylim2 = -1,1 fig = plt.figure(figsize=(4, 6), constrained_layout=True) gs = gridspec.GridSpec(2, 1, height_ratios=[np.diff(ylim1)[0], np.diff(ylim2)[0]], figure=fig) ax1 = plt.subplot(gs[0,0]) ax1.plot(x, y1, c='orange') ax1.set_ylim(ylim1) ax1.set_xticks([], []) ax2 = plt.subplot(gs[1,0]) ax2.plot(x, y2, c='green') ax2.set_ylim(ylim2) ax2.set_xticks([0, 1, 2]) ax2.set_xticklabels([r'0', r'0.5', r'1']) ax2.set_xlabel(r'$n_g$ (2e)') plt.show() 应该给出其内容。