我正在尝试在我的mac应用程序中使用水平滑块,默认情况下幻灯片值是浮点数,因为我需要再次将值显示为标签中的文本(使用用户默认值绑定),所以是一种使滑块输出整数而不是浮点数的方法吗?
答案 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()
应该给出其内容。