以下代码工作正常.它显示一个panedwindow,顶部有一个蓝色框,下面是一个绿色框:
panedwindow .root -orient vertical -showhandle true -background red
frame .top -background blue -width 100 -height 100
frame .bot -background green -width 100 -height 100
.root add .top .bot
pack .root -expand true -fill both
Run Code Online (Sandbox Code Playgroud)
但是,当我panedwindow向下移动命令时,事情就会停止工作.顶部的蓝色框未显示.相反,panedwindow它本身的红色闪耀着:
frame .top -background blue -width 100 -height 100
panedwindow .root -orient vertical -showhandle true -background red
frame .bot -background green -width 100 -height 100
.root add .top .bot
pack .root -expand true -fill both
Run Code Online (Sandbox Code Playgroud)
为什么会这样?可以将panedwindow真的只管理后创建的小部件?我已经看到了与打包器类似的行为,它将拒绝打包-in …
我知道这不是一个新问题..但是我尝试按照解决方案从其他帖子中解决...但是我的文本区域没有任何内容可以打印...如果我直接在我的文本文件上打印一个句子..它的工作......为什么?
#!/usr/local/bin/perl
use Tk;
use File::Tail;
#Main Window
my $mw = new MainWindow;
$mw-> title ("Packet Analyzer Tool");
my $frm_1 = $mw -> Frame() -> pack();
my $frm_2 = $mw -> Frame() -> pack();
my $frm_3 = $mw -> Frame() -> pack();
my $frm_4 = $frm_3 -> Frame(-relief => 'groove', -borderwidth =>2) -> pack(-side => "left");
my $frm_5 = $frm_3 -> Frame() -> pack(-side => "right",-after => $frm_4);
my $but1 = $frm_1 -> Button(-text => "Start",
-command =>\&push_start)
-> pack(-side …Run Code Online (Sandbox Code Playgroud) 我有一个GUI,在其中我有一个在新窗口中打开的属性窗口.在某些时候,(随机而不是确定性地可重复)当我打开窗口时,它会给出以下错误:
grab failed: window not viewable
Run Code Online (Sandbox Code Playgroud)
除了打印该消息之外,它不会干扰程序的正常功能,也不会对任何内容产生任何影响.
创建新窗口的代码是:
proc _prop_menu_make_top {{elem {}}} {
toplevel .prop_menu
#...initialize some variables...
wm title .prop_menu "Properties for $_prop_attr(name)"
#...create and display the window widgets...
bind .prop_menu <Key-KP_Enter> {_prop_menu_ok_button}
bind .prop_menu <Return> {_prop_menu_ok_button}
bind .prop_menu <Escape> {_prop_menu_cancel_button}
# catch presses on the window's `x` button
wm protocol .prop_menu WM_DELETE_WINDOW {
_prop_menu_cancel_button
}
# make the top window unusable
center_the_toplevel .prop_menu
focus .prop_menu.main_frame.model_name.entry
grab release .
grab set .prop_menu
}
proc center_the_toplevel { window } { …Run Code Online (Sandbox Code Playgroud) 我有这样的代码
proc press2 {v sbit} {
puts $v
puts $sbit
}
:
:
button .t.ok2 -text "OKI" -command "press2 $v $sbit"
Run Code Online (Sandbox Code Playgroud)
有了这个,wrong # args: should be "press2 v sbit"
如果我将其更改为 button .t.ok2 -text "OKI" -command {press2 $v $sbit}I get can't read "v": no such variable,我就会得到错误,最后我尝试button .t.ok2 -text "OKI" -command [press2 $v $sbit]了没有出现任何错误但也不起作用的方法。只是问有没有可用于 TCL/TK 的好的文档?通常的手册页和谷歌搜索对我没有多大帮助。我通过反复试验做很多事情。
我在添加从Entry框中获取的值并将其添加到现有数字时遇到了一些麻烦.在这种情况下,我希望将"更改速度"框的值添加到机器人当前速度.运行时,我的代码会产生错误:
TypeError:+ =:'int'和'IntVar'的不支持的操作数类型.
下面是生成输入框的代码:
change_speed_entry = ttk.Entry(main_frame, width=5) # Entry box for linear speed
change_speed_entry.grid()
data = tkinter.IntVar()
change_speed_entry['textvariable'] = data
Run Code Online (Sandbox Code Playgroud)
接下来是我试图操纵结果的地方.这是一个类中的方法.该类的所有其他方法都能正常工作:
def changeSpeed(self, delta_speed):
self.speed += delta_speed
Run Code Online (Sandbox Code Playgroud) 如何绑定Ctrl + Shift + S到方法?基于此,我尝试了以下代码,但它不起作用(打印语句未运行):
import tkinter as tk
def key(event=None):
print("It works!")
root = tk.Tk()
frame = tk.Frame(root, width=100, height=100)
frame.focus_set()
frame.bind('<Control-Shift-s>', key)
frame.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
另外,我想知道有关如何绑定组合键(如果可能)的一般答案。
如何使用方法获取对小部件控制变量的引用cget('variable')?我正在寻找一种使用返回的对象来cget('variable')查找关联tkinter.IntVar对象的解决方案。
import tkinter as tk
root = tk.Tk()
var = tk.IntVar()
print('tkinter variable is of type', type(var)) # <class 'tkinter.IntVar'>
button = tk.Checkbutton(root, text='Checkbutton 1', variable=var)
button.pack(side=tk.TOP, padx=10, pady=10)
# Now I attempt to retrieve "var", using cget('variable').
var2 = button.cget('variable')
print('cget("variable") returns an object of type', type(var2)) # <class '_tkinter.Tcl_Obj'>
print(var is var2) # False
root.mainloop()
Run Code Online (Sandbox Code Playgroud) 如果可用,我想合并一种在第二台显示器上打开 GUI 的方法。我想添加某种类型的错误处理,因此如果有第二台显示器,请使用它,否则在检测到的显示器的中心打开。这能做到吗?
我正在使用Tk/Tcl构建GUI.在使用过程中,我创建了一个新窗口,其中包含一些属性供用户填充.我希望我的主窗口在关闭属性窗口的所有时间都不可用,并且只有当它关闭才能恢复使用主窗口的选项时.
我该怎么做?
我使用创建新窗口 toplevel .prop_menu