【问题标题】:GUI For Loop Button循环按钮的 GUI
【发布时间】:2012-04-02 23:19:38
【问题描述】:

我有多个频道,我想在 GUI 上显示他们的信息。 我想显示名称、长度、采样率......等等,并有一个按钮来绘制它或修改增益。

每个通道都是独立的,并且通道数量并不总是相同,因此我想为一个通道创建一个模式并显示它的次数与通道数一样多,例如每个通道都位于前一个通道的下方.

它基本上是一个图形对象函数的循环,但我不知道最好的方法。

如果您有任何建议......

谢谢

【问题讨论】:

  • 您尝试过什么了吗?你有以编程方式编写 GUI 的经验吗?
  • 是的,我确实有一些经验......我正在考虑为每个频道一个一个地做。总共12个频道。因此,如果我想改变某些东西,我必须改变它 12 次。一团糟。

标签: matlab user-interface button loops


【解决方案1】:

您的问题很笼统,因此根据细节可能会有更多解决方案。但是,一种非常通用的方法是以下一种:

假设您有一个函数plotSingleChannel 将通道数据和GUI 上可用的位置作为输入,您可以在for 循环中调用它的次数与通道数一样多。一个玩具示例是,您需要根据自己的需要对其进行调整(例如,可能打开一个以上的图形来处理多个频道):

function plotManyChannels
fgui = figure;
numChannels = 5;
chData = rand (numChannels , 1000); % 5 random channels
chHeight = .8 * 1/numChannels; % occupy 80% of the available space, in order to leave some free inter-channel margins

for n = 1 : numChannels
    pos = [.05, 1 - n / numChannels, .9, chHeight];
    plotSingleChannel (chData(n,:), fgui, pos);
end
end

function plotSingleChannel (channelData, figHandle, guiPosition)
figure(figHandle)
buttonWidth = .1;
buttonPosition = [1-buttonWidth,guiPosition(2),buttonWidth,guiPosition(4)];
axHandle = axes ('position', guiPosition - [0 0 buttonWidth 0]);
plot(axHandle, channelData);
btnHandle = uicontrol('parent',figHandle,'style','pushbutton','string','push','units','normalized','position',buttonPosition);
end

【讨论】:

  • 感谢您的回答,它非常有用,但我无法在情节旁边制作任何按钮。你能给我举个例子吗?
  • 查看我编辑的代码以获取在每个通道右侧添加按钮的示例。我真的建议您尝试编辑我的代码并阅读以编程方式创建 GUI 的文档,您将从中受益更多,而不是我在“盘子上”为您提供代码。
猜你喜欢
  • 1970-01-01
  • 2020-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-25
  • 2012-04-10
  • 1970-01-01
  • 2018-05-02
相关资源
最近更新 更多