我一直试图用Tk::GraphViz绘制一个连通图。
我有以下代码:
use strict;
use warnings;
use Tk::GraphViz;
use Tk;
my $graph ='graph PathsOfPin {
a [label = "aaa"];
b [label = "bbb"];
c [label = "ccc"];
d [label = "ddd"];
e [label = "eee"];
f [label = "fff"];
a--b;
c--d;
e--f;
b--c;
d--e;
}';
my $mw = new MainWindow();
my $gv = $mw->GraphViz ( qw/-width 800 -height 800/ )->pack ( qw/-expand yes -fill both/ );
$gv->fit(); # This does nothing - down't affect the view
$gv->zoom( -in => 100 ); # This gives me error
$gv->show ( $graph );
MainLoop;当我尝试在没有fit和zoom的情况下运行代码时,我得到了这个非常小的图形(看起来像一个点),我需要用鼠标放大几次,直到我看到它。
fit,它应该适合图来查看--但它并不真正有效。$gv-zoom对变焦进行硬编码时,我会得到以下错误:
Tk::错误:不能将-scrollregion设置为Tk::GraphViz=HASH(0xd1bbb0)的数组(0xbb8d30):坏scrollRegion“??”在/5.8.5/lib/site_perl/5.8.5/x86_64-linux/Tk/Configure.pm 46号线。在/5.8.5/lib/site_perl/5.8.5/x86_64-linux/Tk/Derived.pm第294行Tk回调for。Tk回调用于5.8.5/lib/site_perl/5.8.5/x86_64-linux/Tk/Derived.pm Tk::派生::.graphviz行306 Tk::GraphViz::_scaleAndMoveView在GraphViz.pm第1445行Tk::GraphViz::缩放Tk/GraphViz.pm 1864行不能将-scrollregion设置为Tk::GraphViz=HASH(0xd1bbb0)的-scrollregion(0xbb8d30):坏scrollRegion“??”在5.8.5/x86_64-linux/Tk/Configre.pm第46行。5.8.5/x86_64-linux/Tk/派生. at第294行这是一种更好的方式,以自动适应变焦的图表?
发布于 2020-11-07 04:28:36
的确有!在zoom或fit之前执行show会造成很大的问题。如果您省略了zoom,并在表演之后执行fit,那么在回购程序的master上,一切都可以在当前代码中工作。
此代码现在起作用了:
use strict;
use warnings;
use Tk::GraphViz;
use Tk;
my $graph ='graph PathsOfPin {
a [label = "aaa"];
b [label = "bbb"];
c [label = "ccc"];
d [label = "ddd"];
e [label = "eee"];
f [label = "fff"];
a--b;
c--d;
e--f;
b--c;
d--e;
}';
my $mw = new MainWindow();
my $gv = $mw->Scrolled('GraphViz', qw/-scrollbars osoe -width 800 -height 800/ )->pack ( qw/-expand no -fill both/ );
$gv->show ( $graph );
$gv->fit();
$mw->update;
MainLoop;当您阅读这篇文章时,库的更新版本将在CPAN上。为了处理DOT输出格式的更改,需要进行各种修复。现在看来效果很好。请试一试,并报告GitHub问题的任何问题。
https://stackoverflow.com/questions/16440307
复制相似问题