作者mattheww (阿政)
看板Perl
标题[问题] 关於使用perl tk固定视窗大小
时间Thu Jun 26 15:54:51 2014
大家好,小弟是perl新手,
最近由於研究需要用perl/tk模组做了一个GUI介面,
目前遇的到一个问题想请问板上的高手,
遇到的问题是想固定视窗的大小,
所以我尝试着找了许多把右上角放大缩小disable(变灰色)的方法,但都找不到,
想请问板上高手有没有类似以下:
$mw->protocol('WM_DELETE_WINDOW',sun{return;});
这种写法来让右上角的放大缩小也像close(即"X"钮),可以让它disable掉。
此外,
还发现一种方法:
$mw->overrideredirect(1);
这种写法遇到的问题是虽然视窗大小可以固定了,
但整个视窗似乎没办法任意移动位置。
以上问题希望板上高手能帮忙,谢谢!
小弟初次发文,若排版不佳敬请见谅。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.224.40.100
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Perl/M.1403769293.A.AE0.html
1F:推 LiloHuang:$mw->resizable(0, 0); 06/26 19:52
2F:→ mattheww:非常谢谢LiloHuang大的回覆。想请问是否有办法按视窗右上 06/26 20:59
3F:→ mattheww:角的放大/缩小都使整个视窗大小维持住原本的大小,现在卡 06/26 21:01
4F:→ mattheww:在视窗的确不能上下左右拉大,但一按右上角放大之後又会 06/26 21:02
5F:→ mattheww:整个版面乱掉,以上。抱歉,可能我原本意思不够清楚,谢 06/26 21:03
6F:→ mattheww:谢! 06/26 21:03
7F:推 LiloHuang:设定(0, 0)之後应该是不能按中间那颗放大缩小了吧? 06/26 21:31
8F:→ LiloHuang:我设定之後放大缩小的按钮会 Disable (grayed out) 06/26 21:33
9F:→ mattheww:我的中间那颗放大缩小还是可以按,不知道是不是我哪边弄 06/26 22:09
10F:→ mattheww:错了 06/26 22:09
11F:→ mattheww:我的打法是$mw = Mainwindow->new(); 06/26 22:14
12F:→ mattheww:$mw->geometry("400x100"); 06/26 22:15
13F:→ mattheww:$mw->resizable(0,0); 大概是以上这样 06/26 22:16
14F:推 LiloHuang:差不多,我是用 ActivePerl 5.6.1,你的直译器版本是? 06/26 22:19
15F:→ LiloHuang:怀疑是不同版本的 Tk 可能略有差异,我这边是 grayed 的 06/26 22:19
16F:→ mattheww:我的是写perl,v5.8.8(在linux环境下执行) 06/26 22:27
17F:推 LiloHuang:目前没对应的平台可以帮你测试,假日再研究看看罗 06/26 22:32
18F:→ mattheww:不好意思,请问grayed指的是? 06/26 22:32
19F:→ mattheww:嗯嗯,真的很感谢LiloHuang大大的热心帮忙! 06/26 22:33
21F:→ LiloHuang:就是指 GUI 上的元件被停用了,没办法接受动作的意思 06/26 22:35
22F:→ mattheww:看了一下grayed out(disable)就是我希望达到的动作! 06/26 22:43
23F:推 LiloHuang:我在 Windows 上确定该方法可行,Linux 我假日再测看看 06/26 22:45
24F:→ mattheww:我再研究看看,有板友知道的话,还请各位不吝请教,谢谢! 06/26 22:46
25F:→ mattheww:再次感谢LiloHuang大,揪感心>< 06/26 22:48
26F:→ mattheww: 赐 06/26 23:26
27F:推 LiloHuang:刚才我在CentOS 6.5 + perl-Tk-804.028-2.el6.rf.x86_64 06/28 01:12
28F:→ LiloHuang:使用以下的程式码测试之後发现,放大缩小的按钮会不见 06/28 01:12
29F:→ LiloHuang:而不是跟 Windows 平台一样有 grayed-out 的效果 06/28 01:12
30F:→ LiloHuang:$mw = new MainWindow(); $mw->resizable(0, 0); 06/28 01:14
31F:→ LiloHuang:我猜 Linux + GNOME 本身的视窗就没有把放大缩小 gray 06/28 01:17
32F:→ LiloHuang:的具体实现,因此实际上就只能够把按钮弄到消失吧...XD 06/28 01:17
33F:推 LiloHuang:忘了讲我在上述的linux环境,使用$mw->resizable(0, 0); 06/28 08:09
34F:→ LiloHuang:视窗大小是无法调整的,放大缩小按钮是直接消失而非gray 06/28 08:09
35F:→ mattheww:我的是用perl-Tk-804.27,不过我是用windows系统连学校工 06/28 14:41
36F:→ mattheww:工作站Linux系统,不知道是不是这个原因,才造成放大缩小 06/28 14:42
37F:→ mattheww:钮无法直接消失或是grayed out掉 06/28 14:43
38F:推 LiloHuang:那你的作业系统是? 也是用GNOME吗 XD 06/28 20:25
39F:→ mattheww:作业系统是指GNU/Linux吗XD 06/28 22:03
40F:→ mattheww:刚用switchdesk指令看了一下似乎没有装GNOME或KDE,应该 06/28 22:25
41F:→ mattheww:是这个原因吗 06/28 22:25
42F:推 LiloHuang:我想问的应该是哪一个 distribution,就像我是用 CentOS 06/28 22:27
43F:→ LiloHuang:在没有办法复制出跟你一样的环境状况下 06/28 22:28
44F:→ LiloHuang:我就没有办法进一步再帮你看这个问题哩 XDD 06/28 22:28
45F:→ mattheww:我的是CentOS 5.7 06/28 22:35
46F:→ mattheww:请问大大指的是这个吗(抱歉linux不太熟悉) 06/28 22:39
47F:推 LiloHuang:嗯嗯~ 我是装 6.5 通常预设是 GNOME 没错,我再找时间测 06/28 22:42
48F:→ mattheww:嗯嗯~感谢你! 06/28 22:51
49F:推 LiloHuang:刚刚早上装好 CentOS 5.7 一样是没有放大缩小按钮 06/29 09:35
50F:→ LiloHuang:显示的都还算正常,也没办法调整视窗大小 06/29 09:36
51F:→ LiloHuang:然而我是用 perl-Tk-804.028-2.el5.rf.x86_64.rpm 版本 06/29 09:40
52F:推 LiloHuang:我发现原因罗! 刚装 perl-Tk-804.027-3.2.el5.rf.x86_64 06/29 09:43
53F:→ LiloHuang:立刻不正常,放大缩小的按钮会跑出来 XD 而且也可调大小 06/29 09:44
54F:→ LiloHuang:所以解决方法是升级你的 perl-Tk 版本到最新版就没问题 06/29 09:46
56F:→ LiloHuang:留意一下作业系统版本以及究竟是 32bit 还 64bit 06/29 09:48
57F:→ LiloHuang:举例来说 perl-Tk-804.028-2.el5.rf.x86_64.rpm 06/29 09:49
58F:→ LiloHuang:是给 CentOS 5.x 64bit 版本使用的,祈祷这次能解决罗 06/29 09:49
59F:→ mattheww:目前卡在rpm档的安装权限问题,正在努力排解中 06/29 17:46
61F:→ mattheww:装路径来解决权限问题。测试成功会尽快上来通知好消息XD 06/29 17:48
62F:→ mattheww:测试成功了!!改用perl-Tk-804.028-2.e15.rf.x86_64.rpm後 07/01 18:57
63F:→ mattheww:搭配CentOS5.7,成功让右上角放大缩小钮消失 07/01 18:59
64F:→ mattheww:再次感谢LiloHuang大的热心帮忙!! 07/01 18:59
65F:推 LiloHuang:恭喜你罗 :D 07/01 20:09