标签: tkinter

Tkinter中一个多边形的可变角数量

Tkinter忙着闲逛,想知道是否有一种方法可以创建一个具有可变数量拐角的多边形?我正在尝试编写一个程序,其中涉及用户输入一定数量的坐标,然后在画布上绘制具有这些点边缘的多边形。由于我不知道用户将输入的值的数量,因此不可能为每种可能性编写代码,那么这真的可能吗?

canvas.create_polygon(x1,y1,x2,y2...xn,yn,fill="black")
Run Code Online (Sandbox Code Playgroud)

python tkinter tkinter-canvas

0
推荐指数
1
解决办法
176
查看次数

Tkinter Entry小部件后的事件回调

从这里的第一个答案: StackOverflow#6548837 我可以在用户键入时调用回调:

from Tkinter import *

def callback(sv):
    print sv.get()

root = Tk()
sv = StringVar()
sv.trace("w", lambda name, index, mode, sv=sv: callback(sv))
e = Entry(root, textvariable=sv)
e.pack()
root.mainloop() 
Run Code Online (Sandbox Code Playgroud)

但是,该事件发生在每个键入的字符上。当用户完成键入并按下Enter键或Entry小部件失去焦点(即用户单击其他位置)时,如何调用事件?

python events tkinter callback

0
推荐指数
1
解决办法
4366
查看次数

python Tkinter tkFileDialog

简而言之,两者之间有什么区别

tkFileDialog.asksaveasfile
Run Code Online (Sandbox Code Playgroud)

tkFileDialog.asksaveasfilename
Run Code Online (Sandbox Code Playgroud)

我无法从文档中的构建中了解

python tkinter

0
推荐指数
1
解决办法
265
查看次数

Python 3类错误

我正在尝试通过使用类来制作一个小程序.到目前为止,我已经创建了两个类,其中第一个将运行下一个类.当我运行它时,我收到一条错误消息.我不明白什么是错的,但看起来它有一些关于我Menu1在读取之前定义名称的事情.我将在这些类之后创建一个新函数,它将首先运行MainWindow,然后再运行Menu1.我很感激帮助.

码:

class MainWindow:
    app = Tk()
    app.title("MyApp")
    window = Frame(app, width=1050, height=550)
    app.minsize(width=1050, height=550)
    window.pack()
    menu = Menu1()
    menu.makeMenu()
    app.mainloop()


class Menu1:
    def makeMenu(self):
        app.config(menu=menu)
        menu.add_cascade(label="Settings", menu=subMenu)
        subMenu.add_command(label="Settings", command=settings1)

def settings1():
    print("Open new window")


if __name__ == "__main__":
    MainWindow()
Run Code Online (Sandbox Code Playgroud)

错误信息:

Traceback (most recent call last):
  File "", line 7, in <module>
    class MainWindow:
  File "", line 13, in MainWindow
    menu = Menu1()
NameError: name 'Menu1' is not defined

Process finished with exit code …
Run Code Online (Sandbox Code Playgroud)

python tkinter python-3.x

0
推荐指数
1
解决办法
96
查看次数

ttk / Python中的按钮图像问题

我在使用Python(3.5)中的ttk / tkinter搞砸了,而按钮也遇到了一些问题(特别是ttk.Button)。

无论我尝试什么,都无法终生获得图像显示在按钮上。

我有以下代码:

from tkinter import *
from tkinter import ttk
from PIL import Image, ImageTk

class Example(ttk.Frame):
    def __init__(self, master):
        ttk.Frame.__init__(self, master)
        master.title('Button Test')

        self.configure(padding='10 10 10 10')
        self.grid(column=0, row=0, sticky=(N, E, W, S))

        buttonImage = Image.open('play.png')
        buttonPhoto = ImageTk.PhotoImage(buttonImage)

        myButton = ttk.Button(self, image=buttonPhoto, padding='10 10 10 10')
        myButton.grid(column=1, row=1, sticky=(E, W))

if __name__ == "__main__":
    root = Tk()
    example = Example(root)
    root.mainloop()
Run Code Online (Sandbox Code Playgroud)

这是我在此处此处以及在StackOverflow上的用户中找到的示例的组合。

预先感谢您的任何想法/见解。

-西恩

python tkinter imagebutton ttk python-3.5

0
推荐指数
1
解决办法
1625
查看次数

如何在另一个文件中执行类函数?

我正在尝试调用一个类函数,它将一些文本写入Tkinter的控制台窗口.

但是,当我尝试运行它.我收到以下错误.

TypeError: write() missing 1 required positional argument: 'txt'
Run Code Online (Sandbox Code Playgroud)

这是我的完整代码:

main.py

from tkinter import *
from tkinter.filedialog import askdirectory
import os
import nam


class Window(Frame):

    def __init__(self, master = None):
        Frame.__init__(self, master)
        self.master = master
        self.init_window()


    def init_window(self):
        self.master.title("Source Data Checker")
        self.pack(fill=BOTH, expand=1)

        self.pathLabel = Label(text='Select the location of the source data below and press "Generate Excel"')
        self.pathLabel.place(x=110, y=40)

        self.selectFolderButton = Button(self, text='Select Folder', command=self.openfile)
        self.selectFolderButton.place(x=180, y=350)

        self.executeButton= Button(self, text='Generate Excel', command=self.run)
        self.executeButton.config(state=DISABLED)
        self.executeButton.place(x=330, y=350)

        self.outputWindow = Text()
        self.outputWindow.place(x=100, …
Run Code Online (Sandbox Code Playgroud)

python class tkinter

0
推荐指数
1
解决办法
63
查看次数

NameError:未定义全局名称"INSERT"

在Tkinter尝试我的手,只想添加一个简单的Text字段.我已经能够添加Entry,ButtonLabelText导致的问题.这是我有的Text:

import Tkinter

class myapp_tk(Tkinter.Tk):
    def __init__(self,parent):
        Tkinter.Tk.__init__(self,parent)
        self.parent = parent
        self.initialize()

    def initialize(self):
        self.grid()

        self.about = Tkinter.Text(self)
        self.about.insert(INSERT, "Hello World!")

        self.about.grid(row=0, column=0)

if __name__ == '__main__':
    myapp = myapp_tk(None)
    myapp.title("My First App!")
    myapp.mainloop()
Run Code Online (Sandbox Code Playgroud)

收到错误:

NameError: global name 'INSERT' is not defined

我已经改变了脚本标题以包含from Tkinter import *哪个会强制它,但我很好奇为什么没有这个改变它不起作用.

python tkinter python-2.7

0
推荐指数
1
解决办法
1333
查看次数

如何在网格中显示csv文件?

我正在试图找出如何.csv在tkinter的网格中显示文件,但是没有找到很多在线.

这是我有多远.

import tkinter


root = tkinter.Tk()

for r in range(3):
    for c in range(4):
          tkinter.Label(root, text='R%s/C%s'%(r,c),borderwidth=1 ).grid(row=r,column=c)

root.mainloop()   
Run Code Online (Sandbox Code Playgroud)

我如何.csv使用相同的方法读取文件?

python csv grid tkinter python-2.7

0
推荐指数
1
解决办法
6179
查看次数

str AttributeError:'str'对象没有属性'set'(更新标签)

这是一个简单的数学游戏.感兴趣的功能是checkAnswer().我正在尝试更新,label1以便标签使用新的str更新,而不是连续打印多个标签.

错误:

AttributeError:'str'对象没有属性'set'

from tkinter import *

from random import randint

num1 = 0
num2 = 0
userAnswer = 0
answer = 0
score = 0
labeltext = ""

#PROGRAM FUNCTIONS
def question():
    global num1, num2
    global answer
    num1 = randint(1,10)
    num2 = randint(1,10)
    question = Label(text = "What is " + str(num1)+ " + " + str(num2) + "?").pack()
    answer = num1+num2
    print(answer) #testing purposes

def userAnswer():
    global userAnswer
    userAnswer = IntVar()
    entry = Entry(root, …
Run Code Online (Sandbox Code Playgroud)

python tkinter

0
推荐指数
1
解决办法
3619
查看次数

如何在使用python将数据插入sqlite3时在重复条目上引发错误消息?

伙计我正在使用sqlite3和python tkinter作为前端.数据库很简单,有两个字段,用户名密码.我想进行注册注册页面.其中两个字段中给出的数据存储在sqlite3数据库中.数据正确插入.但是,当数据库中已存在提供的用户名时,我想显示一个消息框.我尝试了下面的代码.

我的代码:

def signup():
    userID = username.get()
    passwd = password.get()
    conn = sqlite3.connect('test.db')
    c = conn.cursor()
    result = c.execute("SELECT * FROM userstable")

    for i in result:
        if i[0] == userID:
            messagebox.showerror("DUPLICATE", "USER ALREADY EXISTS!")

    else:
        conn = sqlite3.connect('test.db')
        c = conn.cursor()
        c.execute("INSERT INTO userstable VALUES (?, ?)", (userID, passwd))
        conn.commit()
        c.close()
        conn.close()
        username.delete(0,END)
        password.delete(0,END)
        username.focus()
        messagebox.showinfo("SUCCESS", "USER CREATED SUCCESSFULLY")
Run Code Online (Sandbox Code Playgroud)

这可以工作,但仍然会在错误消息之后存储重复数据.如果用户名已经可用,我的要求是抛出错误并停止执行.如果用户名不可用,则应插入数据.

我哪里错了?有人可以通过指出来解释我,还是有其他方法可以达到这个目的?看来我需要修改一些功能.请指导我.

编辑1

如果我尝试使用三个条件,则休息不起作用.

我的代码

def data_entry():
    conn = sqlite3.connect('test.db')
    c = conn.cursor()
    c.execute('CREATE TABLE IF …
Run Code Online (Sandbox Code Playgroud)

python sqlite tkinter

0
推荐指数
1
解决办法
661
查看次数