因为我还在学习python,所以我遇到了一个问题.
为什么这样做:
class SomeOtherClass(object):
def __init__(self):
self.number = 10
print(self.number)
def increase(self):
self.number += 1
print(self.number)
class MyMainClass(object):
def __init__(self):
self.otherClass = MyClass()
app = MyMainClass() #Output: 10
app.otherclass.increase() #Output: 11
Run Code Online (Sandbox Code Playgroud)
但这不是:
from tkinter import *
class MyMainClass(object):
def __init__(self):
self.tk = Tkinter() # <-- Error: see below.
app = MyMainClass()
app.tk.title("My window")
...
Run Code Online (Sandbox Code Playgroud)
两次我都包括一个类,但在第二个例子中它说:
NameError:未定义全局名称"Tkinter"
这些示例之间的区别在哪里,我如何解决这个问题,所以我能在课堂上使用tkinter?
谢谢你的帮助.
我有三个功能;用户选择dirBut一个目录,其输出进入dirname并更新一个Entry框。在第三个函数 中,dataInput用户选择一个文件。我希望打开文件对话框在用户先前选择并由 定义的目录中打开dirname,但是,我不确定如何传递dirname给句柄,以便我可以使用它,因为askopenfilename是askdirectory从按钮调用的。
def UserFileInput(self,status,name):
row = self.row
optionLabel = tk.Label(self)
optionLabel.grid(row=row, column=0, sticky='w')
optionLabel["text"] = name
text = status
var = tk.StringVar(root)
var.set(text)
w = tk.Entry(self, textvariable= var)
w.grid(row=row, column=1, sticky='ew')
self.row += 1
return w, var
def askdirectory(self):
dirname = tkFileDialog.askdirectory()
if dirname:
self.directoryEntry.delete(0, tk.END)
self.directoryEntry.insert(0, dirname)
def askfilename(self):
filename = tkFileDialog.askopenfilename(initialdir=dirname)
if filename:
self.dataInput.delete(0, tk.END)
self.dataInput.insert(0, filename)
currentDirectory = os.getcwd()
directory,var …Run Code Online (Sandbox Code Playgroud) 我的代码类似于以下内容
import tkinter as tk
from tkinter import Tk
from tkinter import ttk
root = Tk()
ttk.Label(root, text = 'label text', justify = 'center').grid(row=0, column=0)
string = tk.StringVar()
string.set('entry text')
ttk.Entry(root, textvariable = string).grid(row=0, column=1)
mainButton = ttk.Button(root, text = 'BUTTON').grid(row = 1, columnspan = 2)
root.pack()
Run Code Online (Sandbox Code Playgroud)
实际上,这使得第一行在其旁边有一个标签和一个文本框,在同一行上,然后是两个下面的按钮.现在,当按下该按钮时,我想在包含按钮的行中添加新标签/条目,并将按钮向下移动一行.有可行的方法吗?
from Tkinter import *
import tkFileDialog
import tkMessageBox
import os
import ttk
import serial
import timeit
import time
######################################################################################
class MyApp:
def __init__(self, parent):
########################################################
#Setup Frames
self.MiddleFrame = Frame(parent) #Middle Frame
self.MiddleFrame.pack()
#GLOBAL VARIABLES
self.chip_number = 0 #number of chip testing
###########################################
#Middle Frame setup
Label(self.MiddleFrame, text='Done').grid(row=8, column=1, sticky = E)
self.Done = Canvas(self.MiddleFrame, bg="yellow", width=10, height=10)
self.Done.grid(row=8, column=2)
Label(self.MiddleFrame, text='Chip Number:').grid(row=9, column=1, sticky = E)
#start button
self.button1 = Button(self.MiddleFrame,state=NORMAL, command= self.start_pre)
self.button1["text"]= "START"
self.button1.grid(row=1, column=2, sticky = …Run Code Online (Sandbox Code Playgroud) 我试图弄清楚如何使工具提示出现在由框包围的画布区域上。理想情况下,如果用户将鼠标悬停在点上并且误差范围在 10 像素以内,就会出现工具提示。
import tkinter as tk;
from idlelib.ToolTip import ToolTip;
windowWidth = 960;
windowHeight = 720;
canvasWidth = windowWidth - 10;
canvasHeight = windowHeight - 10;
''' Main Window '''
root = tk.Tk();
root.resizable(width=False, height=False);
root.geometry('{}x{}'.format(windowWidth, windowHeight));
root.title('Sample');
''' Canvas '''
canvas = tk.Canvas(root,
width = canvasWidth,
height = canvasHeight,
bg = 'grey');
canvas.pack(side = tk.RIGHT, padx = 5);
xo = canvasWidth / 2
yo = canvasHeight / 2;
point = canvas.create_rectangle(xo - 1, yo - 1, xo + …Run Code Online (Sandbox Code Playgroud) 我尝试查找,但找不到任何东西。我只想要一个框架或画布与主窗口具有相同的大小,并且每当窗口扩展时,框架也会扩展。我尝试了不同的选择,但它们不起作用。我是否应该为下面的框架对象添加任何属性,使其与根窗口具有相同的大小?请帮忙!
from tkinter import *
root = Tk()
fr = Frame(root, bg = "red")
fr.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud) 我正在使用 python 3.5、python-docx 和 TKinter。有没有办法能够在输入框中输入 .txt 文件名,并让 python 将该 .txt 文件的内容插入到 docx 中的特定位置?我知道如何从 tkinter 中的输入框获取信息以及如何将它们转换为字符串。
我希望能够在输入框中输入某人的姓名(这也是文本文件的名称),并让 python 插入 .txt 文件的内容。
谢谢
这里更新是我正在尝试的代码
from tkinter import *
from tkinter import ttk
import tkinter as tk
from docx import Document
root=Tk()
def make_document():
testbox=ProjectEngineerEntry.get()
TestBox=str(testbox)
def projectengineer():
with open(+TestBox+'.txt') as f:
for line in f:
document.add_paragraph(line)
document=Document()
h1=document.add_heading('engineer test',level=1)
h1a=document.add_heading('Project Engineer',level=2)
projectengineer()
document.save('test.docx')
notebook=ttk.Notebook()
notebook.pack(fill=BOTH)
frame1=ttk.Frame(notebook)
notebook.add(frame1,text='Tester',sticky=W)
tester1=Label(frame1,text='Test1')
ProjectEngineerEntry=Entry(frame1)
tester1.pack()
ProjectEngineerEntry.pack()
save=Button(frame1,text='Save',command=make_document).pack()
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我试图从输入框中获取信息,将其转换为字符串,然后使用该字符串打开具有该特定名称的文本文件。然而我不断得到
TypeError:一元 + 的操作数类型错误:'str'
我不明白这是怎么回事。在实际文档中,我在保存文件时使用了 ++ 方法(将其另存为当前日期和时间)。
我一直在尝试在 Tkinter 中配置小部件的边框颜色,我想知道如何做到这一点......
我检查过 StackOverflow,它说我应该使用该configure选项,然后设置highlightbackgroundcolor = {insert color here}。我已经尝试过了,但没有任何效果。有人可以给我看一个工作代码示例,以便我能弄清楚吗?
我一直在用 Python 3.8 编写代码来帮助我研究东西,我想把它变成一个 GUI。当我这样做时,每当我点击“开始”按钮时都会收到此错误。如果你们中的任何人看到错误,这里是代码。
# Imports
import wikipedia
from tkinter import *
import time
# Code
def Application():
# Definitions
def Research():
# Defines Entry
Result = wikipedia.summary(Term)
print(Result)
# Window Specifications
root = Tk()
root.geometry('900x700')
root.title('Wikipedia Research')
# Window Contents
Title = Label(root, text = 'Wikipedia Research Tool', font = ('Arial', 25)).place(y = 10, x = 250)
Directions = Label(root, text = 'Enter a Term Below', font = ('Arial, 15')).place(y = 210, x = 345)
Term = Entry(root, …Run Code Online (Sandbox Code Playgroud) tkinter ×10
python ×9
python-3.x ×3
frame ×1
import ×1
python-3.5 ×1
python-docx ×1
tooltip ×1
ttk ×1
widget ×1
window ×1