我是Tkinter的绝对初学者,我需要帮助:我想用一个按钮打开一个文件.我到处都发现这个非常简单的例子:
from Tkinter import *
from tkFileDialog import askopenfilename
def callback():
name= askopenfilename()
print name
errmsg = 'Error!'
Button(text='File Open', command=callback).pack(fill=X)
mainloop()
Run Code Online (Sandbox Code Playgroud)
但是,如何从函数回调中调用变量"name"?我在这个函数之外需要这个变量!当然,我也可以在回调函数中打开文件,但我需要打开的文件将内容保存在数组中并使用数组...
在扩展应用程序窗口时,如何使树视图小部件粘贴到Noth(到工具栏).
它坚持西南和东部,但不是北部.
使用:
self.tree.grid(row=1,column=0,sticky=N+W+E+S)
Run Code Online (Sandbox Code Playgroud)
我这是tree.grid对齐配置
...
self.vsb = ttk.Scrollbar(master, orient=VERTICAL, command=self.tree.yview)
self.hsb = ttk.Scrollbar(master, orient=HORIZONTAL, command=self.tree.xview)
self.vsb.grid(row=1, column=1, sticky='ns')
self.hsb.grid(row=2, column=0, sticky='ew')
self.tree.configure(yscrollcommand=self.vsb.set)
self.tree.configure(xscrollcommand=self.hsb.set)
self.tree.grid(row=1,column=0,sticky=N+W+E+S)
...
Run Code Online (Sandbox Code Playgroud)
这是工具栏网格配置(如果它导致问题)
...
self.toolbar = Frame(master, bg="blue")
self.upButton = Button(self.toolbar, text="Up", command=self.doNothing, padx=10, pady=10)
self.upButton.grid(row=0,column=0,sticky=N+W)
self.downButton = Button(self.toolbar, text="Down", command=self.doNothing, padx=10, pady=10)
self.downButton.grid(row=0,column=1, sticky=N+W)
self.insupButton = Button(self.toolbar, text="Insert UP", command=lambda: self.insertUp(self.tree), padx=10, pady=10)
self.insupButton.grid(row=0,column=2, sticky=N+W)
self.insdownButton = Button(self.toolbar, text="Insert Down", command=lambda: self.insertDown(self.tree), padx=10, pady=10)
self.insdownButton.grid(row=0,column=3, sticky=N+W)
self.delbrButton = Button(self.toolbar, text="Delete branch", command=lambda: self.deleteBr(self.tree), …Run Code Online (Sandbox Code Playgroud) 我在tkinter中创建了简单的标签,但它是用{}创建的,我不想这样做.
gameOver=Label(root, text=('Game over!\nYou scored', number, ' points!'),
font=('Arial Black', '26'), bg='red')
Run Code Online (Sandbox Code Playgroud)
这是我的代码,其中number是可变的.但它打印出"{Game over!you scored} 0 {points!}"这就是用这段代码得到的(0是值number)

任何解决这个问题的想法都是受欢迎的
我总是觉得当我在stackoverflow上问一个问题就像答案那样......应该是...... RTFM,即使我得到的每一个答案都是友好,耐心和接受的.经过一个下午试图找到答案,我被困住了.我想打开一个Tkinter,文本框和绑定键(键盘快捷键)和一个菜单项,所以我会有一个很好的弹出菜单(也就是上下文菜单),如Window的记事本,你右击,看看
Cut
Copy
Paste
-----
Select All
Run Code Online (Sandbox Code Playgroud)
用Ctrl+ X,Ctrl+ C,Ctrl+ V和Ctrl+ A作为键绑定(我还没弄清楚如何进行撤销).问题是我无法同时使用键绑定和菜单弹出窗口来使用相同的功能.如果我从select_all()的定义中添加或删除"event"参数,则一个有效,但另一个则无效.
from Tkinter import *
# Clears the clipboard and copies the selected text to the it
def copy():
mainwin.clipboard_clear()
mainwin.clipboard_append(mainwin.selection_get())
# Needed for the right click pop-up menu to work, goes with copy()
def popup(event):
popupmenu.post(event.x_root, event.y_root)
# Selects all text, used with the "control a" keybinding
def select_all(event):
textbox.tag_add(SEL, "1.0", END)
textbox.mark_set(INSERT, "1.0")
textbox.see(INSERT) …Run Code Online (Sandbox Code Playgroud) 这是Game of Life计划.当我测试它时,我的周围(行,col)函数返回0,即使配置文件指示8个方格将被设置为"LIVE".只需在打开配置文件后通过打印电路板进行测试,结果表明,而不是让指示的方块显示为"LIVE",那些"LIVE"表示"无",因此没有计算"LIVE"值.
[[None,None,None,0,0,0,0],[None,0,None,0,0,0,0],[None,None,None,0,0,0,0],[ 0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0, 0,0,0,0,0,0]是我得到的print board.看不到我在这里缺少的东西?
LIVE = 1
DEAD = 0
def board(canvas, width, height, n):
for row in range(n+1):
for col in range(n+1):
canvas.create_rectangle(row*height/n,col*width/n,(row+1)*height/n,(col+1)*width/n,width=1,fill='black',outline='green')
n = int(raw_input("Enter the dimensions of the board: "))
width = n*25
height = n*25
from Tkinter import *
import math
window=Tk()
window.title('Game of Life')
canvas=Canvas(window,width=width,height=height,highlightthickness=0)
canvas.grid(row=0,column=0,columnspan=5)
board = [[DEAD for row in range(n)] for col in range(n)]
rect = [[None for row in range(n)] for col in range(n)]
for row …Run Code Online (Sandbox Code Playgroud) 我有三个游戏功能,如下:
def round():
global board
board_copy = [[x for x in row] for row in board]
for row in range(n):
for col in range(n):
if countNeighbors(row,col) == 3:
board_copy[row][col] = LIVE
canvas.itemconfigure(rect[row][col],fill='red')
elif countNeighbors(row,col) > 3 or countNeighbors(row,col) < 2:
board_copy[row][col] = DEAD
canvas.itemconfigure(rect[row][col],fill='black')
board = board_copy
def start():
round()
global alarm
alarm = window.after(500,round)
def stop():
global alarm
window.after.cancel(alarm)
Run Code Online (Sandbox Code Playgroud)
我希望start()函数round()每500毫秒运行一次,直到用户打开stop()(使用按钮).但是,在完全停止之前,调用start()只给了我两次迭代round().
在Linux Mint'Mate'17环境中使用Python 2.7和Tkinter
我是OOP的新手,并不了解如何将持久值传递给类实例; 在此代码中,当我在第20行和第22行使用Pin_ID时,会生成"全局未定义"错误:
1 #!/usr/bin/env python
2 import Tkinter as tk
3
4 root = tk.Tk()
5
6 class cbClass:
7 def __init__(self, Pin_ID):
8 self.cb_Txt=tk.StringVar()
9 self.cb_Txt.set("Pin " + Pin_ID + " OFF")
10 self.cb_Var = tk.IntVar()
11 cb = tk.Checkbutton(
12 root,
13 textvariable=self.cb_Txt,
14 variable=self.cb_Var,
15 command=self.cbTest)
16 cb.pack()
17
18 def cbTest(self):
19 if self.cb_Var.get():
20 self.cb_Txt.set("Pin " + Pin_ID + " ON")
21 else:
22 self.cb_Txt.set("Pin " + Pin_ID + " OFF")
23 …Run Code Online (Sandbox Code Playgroud) 我试图将变量"data"从"on_select"传递给Text-Widget.通过选择列表框中的项目,可以使某人导入的文件内容发生变化.但我仍然是一个非常初学者,不知道如何传递数据的价值.有人可以帮我吗?谢谢!
from Tkinter import *
import tkFileDialog
root=Tk()
data = "Bitte eine Datei importieren."
class View(Listbox):
def __init__(self, master):
Listbox.__init__(self, master, width=75, selectmode=SINGLE)
class Controller(object):
def __init__(self, master):
self._master = master
frame1 = Frame(self._master)
frame1.pack(side=LEFT, fill=BOTH, padx=5,expand=True)
self._Listbox=View(frame1)
self._Listbox.pack(side = TOP,fill=BOTH, expand = True,pady=20)
menubar = Menu(self._master)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Importieren", command = self.file_open)
filemenu.add_command(label="Beenden", command = quit)
menubar.add_cascade(label='File',menu=filemenu)
self._master.config(menu=menubar)
def on_select(event):
filename = self._Listbox.get(self._Listbox.curselection()[0])
global data
data = "Test"
with open(filename,'r') as f:
data = f.readlines()
print data …Run Code Online (Sandbox Code Playgroud) 我刚开始使用tkinter,我不知道如何使滚动条工作.我在stackoverflow上检查了许多关于tkinter的不同线程,我对我究竟需要做什么感到困惑.
我已经添加了滚动条,但它没有滚动任何内容(注释#*******Scrollbar*******).我希望它从内容框架滚动文本.
已经在#*******词典数据*******中插入了lorem ipsum.
from tkinter import *
class Search(Tk):
def __init__(self):
Tk.__init__(self)
self.minsize(380,444)
self.maxsize(380,444)
self.title("")
self.search_start = StringVar()
self.search_start.set('Enter your query')
self.search_result = StringVar()
self.bind("<Return>", self.search_button)
self.scrollbar = Frame(self)
self.scrollbar.pack(side=RIGHT, fill=Y)
self.search_bar = Frame(self, bg="blue")
self.search_bar.pack(side=TOP, fill=X)
self.index = Frame(self)
self.index.pack(side=LEFT)
self.content = Frame(self)
self.content.pack(side=TOP, fill=X)
self.status_bar = Frame(self, bg="yellow")
self.status_bar.pack(side=BOTTOM, fill=X)
# ******* Search Input *******
self.entry = Entry(self.search_bar, textvariable = self.search_start)
self.entry.pack(side=LEFT, padx=4, pady=4)
# ******* Search Button *******
self.search = Button(self.search_bar, text="Search", command=self.search_button)
self.search.pack(side=LEFT)
# ******* …Run Code Online (Sandbox Code Playgroud) 我有一个tkinter界面,需要每5分钟自动刷新一次。到目前为止,没有问题,您只需要执行以下操作即可:
root.after(300000, function_to_run, args_of_fun_to_run)
Run Code Online (Sandbox Code Playgroud)
问题是我必须在“无限”时间内完成此操作。该方案是GUI将在连接到电视的PC上运行,并在我的办公室中显示24/7的某些信息。这可以工作大约8个小时,然后出现以下错误:

现在,我知道回溯一直一直到我使用matplotlib的自定义模块之一中的一行。我的自定义模块都不使用任何循环,因此我知道错误不是直接来自其中一个循环(如果我输入错误,请更正我),因此必须由我无限次地重复执行该函数。这是我主要功能的代码:
from tkinter import *
from tkinter import ttk
import logging
import datetime
import sys
sys.path.append(r'C:\Users\me\Desktop\seprated sla screens')
import sla_main as sla
import main_frame as mf
import sla_grid as sg
import incoming_volume as iv
import outgoing_volume as ov
import read_forecast as fc
import get_headers as hd
import vol_graph as vg
import out_graph as og
import add_graph as ag
import sla_reduction_email as sre
###################################
###################################
###################################
###################################
runs = 0
def maininterface(f_size, pic_x, pic_y):
global runs …Run Code Online (Sandbox Code Playgroud) tkinter ×10
python ×9
python-3.x ×2
button ×1
contextmenu ×1
label ×1
oop ×1
python-2.7 ×1
treeview ×1
types ×1
variables ×1