当拨打电话时
tkFileDialog.askopenfile()
Run Code Online (Sandbox Code Playgroud)
tkinter 中的方法,如何将默认目录设置为用户的主目录?有没有一种方法可以独立于操作系统来完成此操作,或者这是程序员必须处理的事情?
考虑以下 MWE:
from Tkinter import *
root = Tk()
Label(root,text="foo").pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
我想设置一个新创建的Tkinter窗口,其中不包含任何“可聚焦”控件(例如前台按钮)。如果我(从 shell)运行上面的代码,窗口将处于非活动状态,因此无法对键绑定做出反应。
有什么办法可以将这样的窗口带到前台吗?
[编辑] 我正在使用 Python 2.7.5 和 OS X Mavericks。我从终端窗口运行代码,即使 Tkinter 窗口已正确创建,焦点仍保留在该窗口上。
我正在尝试使用 tk.Scale 来更改 tk.IntVar。我可以在第一个 tk 窗口上执行此操作,但不能在第二个窗口上执行此操作。为什么?
看看这个可怜的样本:
import tkinter as tk
# main root
root = tk.Tk()
myvar = tk.IntVar()
def on_change(*args):
print("Value changed to {}".format(myvar.get()))
myvar.trace("w", on_change)
sc = tk.Scale(root, from_=1, to=10, orient=tk.HORIZONTAL, length=320, \
variable=myvar)
sc.grid()
# second root
root2 = tk.Tk()
myvar2 = tk.IntVar()
def on_change2(*args):
print("Value2 changed to {}".format(myvar2.get()))
myvar2.trace("w", on_change2)
sc2 = tk.Scale(root2, from_=1, to=10, orient=tk.HORIZONTAL, length=320, \
variable=myvar2)
sc2.grid()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我在 Mac 上使用 python 3.3。
我无法弄清楚如何在 Tkinter 实例中运行多个应用程序。我计划有一个主窗口来调用其他应用程序来运行。
我还想让登录按钮设置用户名和密码字符串,然后关闭它自己的窗口。
我已经尝试过使用顶级窗口,但这限制了我格式化按钮的能力。例如,我不能使用框架......非常感谢有关我需要采取的方向的任何帮助。
我正在旋转我的轮子试图解决这个问题,我已经查看了许多不同的代码示例,并且我不断得到矛盾的方法来做同样的事情。我正在使用Python 3。
import tkinter as tk
import os
import json
from tkinter import Toplevel
cert = ""
username = ""
password = ""
base_url = ''
url = ''
splash_page = ''
class BuildApplication(tk.Frame):
def __init__(self, master=None):
tk.Frame.__init__(self, master)
self.pack()
self.createWidgets()
def createWidgets(self):
self.lUSER = tk.Label(self, text="Username: ").pack(side="left")
self.eUSER = tk.Entry(self)
self.eUSER.pack(side="left")
self.lPASS = tk.Label(self, text="Password: ").pack(side="left")
self.ePASS = tk.Entry(self)
self.ePASS.pack(side="left")
#ive tried command= lambda: self.setCredentials(self.eUSER.get(),self.ePASS.get())
# command = self.setCredentials(self.eUSER.get(),self.ePASS.get())
# But none if it …Run Code Online (Sandbox Code Playgroud) 我查看了 stackOverflow 上的几篇文章来解释答案,但无论我使用哪个,我都无法从我的条目小部件中获取字符串;它只是检测到一串“”
这是我的代码:
def buttonTest():
global score
gui.title("Test")
for child in gui.winfo_children():
child.destroy()
global questionText
global questionAnswer
questionText = StringVar()
questionAnswer = 0
question = Label(gui, textvariable = questionText, fg = "black", bg = "white")
question.grid(row = 0, column = 1)
userInput = StringVar()
input = Entry(gui, textvariable = userInput)
input.grid(row = 1, column = 0)
swapQuestion()
checkAns = Button(text = "Check answer", command = partial(checkAnswer, userInput.get(), questionAnswer), fg = "black", width=10)
checkAns.grid(row = 1, column = 2)
Run Code Online (Sandbox Code Playgroud) 我试图获取列表的最大值,该列表可能包含零,0。在 Tcl 8.5 中,当我运行时:
set x {-5 -4 -3 -2 -1 0 1 2 3 4 5}
set maxx [expr max($x)]
set minx [expr min($x)]
puts "$minx $maxx"
Run Code Online (Sandbox Code Playgroud)
我收到错误:
missing operator at _@_
in expression "max(-5 -4 -3 -2 -1 _@_0 1 2 3 4 5)"
(parsing expression "max(-5 -4 -3 -2 -1 0 1...")
invoked from within
"expr "max($x)""
invoked from within
"set maxx [expr "max($x"]"
Run Code Online (Sandbox Code Playgroud)
我尝试过我能找到的语法变化和资源。
作为解决方法,我将只使用 lsort 并获取该列表的第一个/最后一个元素,但我真的想知道我在这里做错了什么:/谢谢。
我有这个程序:
#!/usr/local/bin/wish
package require Tk
# Window properties
wm title . "Jau"
wm minsize . 320 240
# main frame
grid [ttk::frame .f -padding "0 0 0 0"] -column 0 -row 0 -sticky nwes
grid columnconfigure . 0 -weight 1; grid rowconfigure . 0 -weight 1
# drawing canvas
canvas .f.canvas -bg darkgreen
place .f.canvas -relwidth 1.0 -relheight 1.0
# cmd
ttk::entry .f.cmd -textvar cmd -width 30
pack .f.cmd -anchor s -side top
puts stderr "hello world"
Run Code Online (Sandbox Code Playgroud)
当我运行它时,控制台中没有打印“hello world”。有什么办法可以去puts …
用户手动调整 tkinter 窗口的大小后,它不再缩小以适应。
什么 tkinter 命令会将其恢复为“缩小以适应”行为?
我在一个更大的脚本中包含了条件密码捕获。代码如下所示:
if thing: # found token, don't need password
do stuff
else: # no token, get password in popup
try:
import tkinter as tk
import tkinter.simpledialog
tk.Tk().withdraw()
passwd = tkinter.simpledialog.askstring("Password", "Enter password:", show="*")
return passwd
Run Code Online (Sandbox Code Playgroud)
从功能上来说还不错,但我的大多数用户都使用分辨率为 3840x1600 的显示器,因此当左上角弹出对话框时很容易错过。
是否有一种简单的方法来覆盖 simpledialog 类以告诉它出现在监视器上的某个 X/Y 处,或者是我构建完整的唯一选择mainloop()?
我正在尝试在 Perl 中使用简单的 Tk Yes/No 对话框。我有以下基于metacpan 示例的脚本:
#!/usr/bin/perl
use strict;
use warnings;
use Tk::Dialog;
my $mw->Dialog->new();
my $dialog = $mw->Dialog(-text => 'Save file?',
-bitmap => 'question',
-title => 'Save File Dialog',
-default_button => 'Yes',
-buttons => [qw/Yes No Cancel/]);
print "$dialog\n";
Run Code Online (Sandbox Code Playgroud)
当我运行它时,它会抛出以下错误:
Can't call method "Dialog" on an undefined value at script.pl line N.
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
tk-toolkit ×10
tkinter ×7
python ×6
python-3.x ×2
tcl ×2
dialog ×1
perl ×1
perltk ×1
python-3.3 ×1
syntax ×1