有没有办法在单个proc中禁用tk窗口中的所有小部件?参数可以只是初始的顶级路径.
我编写了一个脚本来获取文件名并将文件内容插入到Text小部件中.现在当我关闭脚本窗口时,我需要它将文本写入Unix屏幕.
如何获取Text小部件内容?
我的文本小部件插入代码是:
open(FILE, $file_name);
foreach my $line (<FILE>) {
$text->insert('end', $line);
}
Run Code Online (Sandbox Code Playgroud) 我想在Perl中使用Tk创建一个小GUI,它将有2个按钮:Race和Quit.
我希望Race按钮能够运行位于模块中的函数Car并被调用Race.
我写了以下代码:
#!/usr/bin/perl -w
use strict;
use warnings;
use Car;
use Tk;
my $mw = MainWindow->new;
$mw->Label(-text => "The Amazing Race")->pack;
$mw->Button(
-text => 'Race',
-command => sub {Car->Race()},
)->pack;
$mw->Button(
-text => 'Quit',
-command => sub { exit },
)->pack;
MainLoop;
Run Code Online (Sandbox Code Playgroud)
它可以工作,但是对我来说,制作一个只能调用另一个子程序的未命名子程序似乎很愚蠢.但是当我试图使用它-command => sub Car->Race(),或-command => sub \&Car->Race(),它没有工作.
我明白这是因为我没有传递对函数的引用.如何将引用传递给位于另一个命名空间(模块)中的函数?
我有一个状态栏,它是一个连接到变量的标签:
label .main_frame.status_bar.status_label -textvariable _DB(status_text)
Run Code Online (Sandbox Code Playgroud)
我想在每次出现错误时更改文本的颜色,这意味着当状态栏显示错误时,文本应为红色,稍后显示正常状态时,应更改回黑色.如何-foreground"动态" 更改标签的属性?
我想在Tcl/Tk中做简单的图形例程,如散点图,xy图,直方图.我使用的是Tcl/Tk 8.5.7.我发现在Tcler的维基中,很少有选项如BLT在Tcl/Tk 8.5+中不受支持
是否有任何Tcl/Tk接口gnuplot或任何小部件来完成图形化?
请告诉我Tcl/Tk中图形例程的选择.
This simple application almost does what I want:
import Tkinter as Tk
def hello(x):
print "Hello"
root = Tk.Tk()
root.bind("<Up>", hello)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
我将向上箭头捣碎,一遍又一遍地打印出"你好".但是,在重复开始之前有一段延迟,重复率比我想要的慢.如何将此重复延迟设置为零?如何控制重复间隔?
我知道其他Tkinter小部件有'repeatdelay'和'repeatinterval'的配置选项,但我似乎找不到一个Tkinter根窗口.
(我正朝你的方向看,布莱恩奥克利)
我正在尝试使用TK支持安装Ruby.
使用RVM,我这样做:
rvm install 1.9.2 -C --enable-shared --enable-pthread
Run Code Online (Sandbox Code Playgroud)
安装似乎工作正常,我可以看到一些叫做的东西
.rvm/src/ruby-1.9.2-p320/ext/tk/tcltklib.c
Run Code Online (Sandbox Code Playgroud)
我假设是我需要的图书馆?
然后我试着跑
require 'tk'
Run Code Online (Sandbox Code Playgroud)
在irb中,但收到错误消息
LoadError: no such file to load -- tk
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
如果有人对在OSX上使用TK支持将Ruby升级到2.0.0的完整步骤列表感兴趣,这就是我所做的:
为Ruby安装RVM -
\curl -#L https://get.rvm.io | bash -s stable --autolibs=3 --ruby
Run Code Online (Sandbox Code Playgroud)
从ActiveTcl安装TK - http://www.activestate.com/activetcl
跑
rvm reinstall 2.0.0 --enable-shared --enable-pthread --with-tk --with-tcl
Run Code Online (Sandbox Code Playgroud)
启动irb并检查TK安装是否成功
require 'tk'
Run Code Online (Sandbox Code Playgroud) 我刚刚开始学习tkinter,我在这里缺少一些基本的东西.当我尝试除了创建一个空白窗口之外什么都不做的时候,我得到了混合结果.这是代码:
from tkinter import *
from tkinter import ttk
root = Tk()
Run Code Online (Sandbox Code Playgroud)
而且如果我在python shell中运行它会完美地运行(比如只需在IDLE编辑器中点击F5)并弹出一个小空白窗口并保持打开直到我关闭它.
但是,如果我只是双击.pyw文件,根本没有任何事情发生.如果我将其保存为.py,则相同.
如果我将它保存为.py 并添加input()到最后,那么小空白窗口会弹出并保持打开状态.将其添加到.pyw无效; 仍然没有任何反应 由于.pyw隐藏了控制台,因此具有部分意义.
但是我在这里做错了什么?我需要做些什么来制作一个只显示一个空白窗口并且不显示控制台的.pyw?
我创建了一个对话框,一切都很好,除非我可以某种方式返回结果。从对话框让用户选择的问题是,我们不知道什么时候,他/她会点击,例如ok或cancel。
我试图查看如何实现标准对话框,以执行类似操作。我注意到所有打开对话框的函数,例如askdirectory或askopenfile调用Dialogmethod show。因此,我决定看一下该方法,但我没有完全看到该方法与能够等待用户的回答/操作返回某些值的事实之间的关系。
我们究竟如何从对话框中返回一些值?
我正在编写一个带有Tkinter GUI的应用程序,其中包括我想要键盘访问的长列表框.
在使用箭头键一次滚动一个项目是乏味的,所以我想,让用户在列表中更快速地移动,通过打字了元素的名称,也使得page up,page down,home,和end工作.
问题是,当我使用Listbox的select_set()方法时,它似乎与单击项目或使用箭头键移动完全相同.
当我按箭头键或单击以选择一个项目时,它将突出显示该项目为蓝色并在其周围放置黑色边框.
当我只使用该select_set()方法时,它只将蓝色突出显示移动到所需的项目.黑色边框位于之前的项目周围.
这会导致问题,因为如果我随后通过按向上/向下箭头键移动我的选择,它将选择具有黑色边框的项目上方/下方的项目,而不是以蓝色突出显示的项目.
我的问题是,除了蓝色突出显示外,如何将黑色边框移动到正确的项目?
这是一个屏幕截图,显示蓝色突出显示和黑色边框不同步:

这是一些可以重现问题的最小代码.我删除的实施end,page up以及page down,但你仍然可以通过选择比第一个其他任何元素用鼠标,然后按看出问题home.
from Tkinter import END, Listbox, Tk
top = Tk()
listbox = Listbox(top)
listbox.grid(row = 0, column = 0)
for item in ['First', 'Second', 'Third', 'Last']:
listbox.insert(END, item)
def onKey(e):
if e.keysym == 'Home':
listbox.select_clear(0, END)
listbox.select_set(0)
listbox.bind('<Key>', onKey)
top.mainloop()
Run Code Online (Sandbox Code Playgroud)