tcl/tk窗口管理器

窗口尺寸:

设置窗口的宽高:

wm geometry .window 300x200

 

 

恢复窗口到其自然尺寸:

wm geometry .window {}

 

 

设置窗口最大最小尺寸

wm minsize .window 100 50

wm maxsize .window 400 150

宽度范围100~400像素,高度范围50~150像素

 

设置窗口是否尺寸可调:

wm resizable .window 0 1

0 :尺寸不可调   1:尺寸可调

 

限制宽高比范围:

wm aspect .window 1 3 4 1

告诉窗口管理器不允许用户将窗口的宽高比设置为小于1/3或大于4。

 

窗口位置:

设置窗口相对显示器的位置:

wm geometry .window 100x200+300+400

设置宽高为100x200,窗口左上角相对为显示器上坐标为(300,400)的店。如果两个‘+’的任何一个改成‘-’,则相对显示器的右下角开始。

 

窗口状态:

命令wm withdraw .window将一个窗口至于关闭状态。如果在窗口显示在屏幕上之前调用了该命令,窗口便会从关闭状态开始。这条命令最常见的用途是组织一个用程序的主窗口显示在屏幕上(在一些应用程序中中,主窗口没有任何作用,用户界面是由顶层窗口给出的)。一旦窗口退出,他可以用wm deiconify 或wm iconify返回屏幕。

 

图标化窗口:

wm iconify .window

 

查询窗口的状态;

wm state .window

=>iconic

 

装饰:

设置窗口标题:

wm title .window "you window title"

 

设置窗口图标:

wm iconbitmap . -defualt $iconpath
设定所有的窗口图标都为 $iconpath所指定的图标。


wm iconbitmap . $iconpath
只设定当前窗口图标为 $iconpath所指定的图标。

 

一般 $iconpath 只支持.ico格式的图像。

 

针对系统的窗口属性:

wm attributes window ?attribute? ?value attribute value ...?

 

设置窗口最大化:

-fullscreen boolean

例如:

wm attributes .window -fullscreen true

wm attributes .window -fullscreen false

 

设置窗口总是在最前端:

-topmost boolean

 

控制窗口的透明度:

-alpha number

其中alpha范围为0.0(透明)到1.0(不透明)

 

设置为无效状态:

-disabled boolean

 

设置工具窗口样式:

-toolwindow boolean

 

指定透明色:

-transparentcolor -color

如果指定为空字符串(默认),则不使用任何透明色。

 

关闭窗口:

 

destroy .window

 

或者在用户按下框架上的关闭按钮时,由窗口管理器来关闭。可以用wm protocol截获关闭命令。相当于产生一个窗口关闭事件,由wm protocol截获进行处理。

例如:

wm protocol .window WM_DELETE_WINDOW {

    set response [tk_messageBox -type yesno -message "Really quit?"]

    if {$response eq "yes"} {

        destroy .window

    }

}

上述代码在窗口管理器关闭窗口时调用,弹出确认窗口,如下

 


 

如果点击“是”,命令返回字符串“yes”(否则返回“no”),则关闭窗口。

注意,destroy .window 命令直接关闭窗口,不会传递给窗口管理器处理,因此不会重复触发上述命令。

转载于:https://www.cnblogs.com/kane1990/archive/2011/12/19/2293979.html

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tcl/Tk可以与C++语言进行集成,使用C++调用Tcl/Tk提供的API来创建GUI界面。以下是在C++中使用Tcl/Tk创建GUI界面的基本步骤: 1. 引入头文件:使用`#include`引入Tcl/Tk提供的头文件。 ```cpp #include <tcl.h> #include <tk.h> ``` 2. 初始化Tcl/Tk:在C++程序中调用`Tcl_FindExecutable()`和`Tk_Init()`函数来初始化Tcl/Tk环境。 ```cpp Tcl_FindExecutable(argv[0]); Tk_Init(interp); ``` 3. 创建窗口:使用`Tk_MainWindow()`函数创建主窗口,并设置窗口的大小、标题等属性。 ```cpp Tk_Window mainWindow = Tk_MainWindow(interp); Tk_DefineBitmap(interp, Tk_GetUid("gray50"), gray50_bits, gray50_width, gray50_height); Tk_SetWindowBackground(mainWindow, Tk_GetUid("gray50")); Tk_SetWindowTitle(mainWindow, "My Window"); Tk_GeometryRequest(mainWindow, 400, 300); ``` 4. 创建组件:使用Tcl/Tk提供的API创建各种组件,如标签、按钮、输入框等。 ```cpp Tk_Window label = Tk_CreateWindow(mainWindow, NULL, "label", "-borderwidth", "2", "-relief", "groove", "-text", "Hello, world!", NULL); Tk_Window button = Tk_CreateWindow(mainWindow, NULL, "button", "-text", "Click me!", "-command", "puts \"Button clicked.\"", NULL); Tk_Window entry = Tk_CreateWindow(mainWindow, NULL, "entry", NULL); ``` 5. 布局组件:使用Tcl/Tk提供的API将组件按照一定的布局方式排列在窗口中。 ```cpp Tk_PackOptions options = {TK_PACK_SIDE_LEFT}; Tk_PackConfigure(interp, label, "-side", "left", NULL); Tk_PackConfigure(interp, button, "-side", "left", NULL); Tk_PackConfigure(interp, entry, "-side", "left", NULL); ``` 6. 处理事件:使用Tcl/Tk提供的API为组件绑定事件处理函数,当组件触发相应事件时,执行对应的处理函数。 ```cpp Tk_CreateEventHandler(button, ButtonPressMask, ButtonEventHandler, NULL); ``` 7. 进入事件循环:使用Tcl/Tk提供的`Tk_DoOneEvent()`函数进入事件循环,等待用户的操作。 ```cpp while (!done) { Tk_DoOneEvent(TK_ALL_EVENTS); } ``` 以上是在C++中使用Tcl/Tk创建GUI界面的基本步骤,可以根据需要添加其他组件和事件处理函数,实现更复杂的界面效果。需要注意的是,使用Tcl/Tk创建GUI界面需要同时熟悉Tcl/Tk和C++,需要一定的编程经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值