车辆一班麦同学 发表于 2020-3-22 22:36:50

关于GUI的求助

源代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import tkinter as tk# 使用Tkinter前需要先导入

# 第1步,实例化object,建立窗口window
window = tk.Tk()

# 第2步,给窗口的可视化起名字
window.title('My Window')

# 第3步,设定窗口的大小(长 * 宽)
window.geometry('500x300')# 这里的乘是小x

# 第4步,在图形界面上设定输入框控件entry并放置控件
e1 = tk.Entry(window, show='*', font=('Arial', 14))   # 显示成密文形式
e2 = tk.Entry(window, show=None, font=('Arial', 14))# 显示成明文形式
e1.pack()
e2.pack()

# 第5步,主窗口循环显示
window.mainloop()



我打的代码:
from tkinter import *

window = Tk()
window.title('My window')
window.geometry('500x300')

e = Entry(window, show=None).pack()


def insert_point():
    var = e.get()
    t.insert('insert', var)


def insert_end():
    var = e.get()
    t.insert('end', var)


b1 = Button(window, text='insert point', width=10, height=2, command=insert_point()).pack()
b2 = Button(window, text='insert end', width=10, height=2, command=insert_end()).pack()

t = Text(window, height=3).pack()

window.mainloop()



为什么我打的代码会出现:AttributeError: 'NoneType' object has no attribute 'get'这个错误?

zltzlt 发表于 2020-3-23 13:08:36

正确代码:

from tkinter import *

window = Tk()
window.title('My window')
window.geometry('500x300')

e = Entry(window, show=None)    # 更改
e.pack()


def insert_point():
    var = e.get()
    t.insert('insert', var)


def insert_end():
    var = e.get()
    t.insert('end', var)


b1 = Button(window, text='insert point', width=10, height=2, command=insert_point).pack()    # 不能加括号
b2 = Button(window, text='insert end', width=10, height=2, command=insert_end).pack()

t = Text(window, height=3)    # 更改
t.pack()

window.mainloop()

车辆一班麦同学 发表于 2020-3-23 16:32:57

zltzlt 发表于 2020-3-23 13:08
正确代码:

非常非常感谢您,方便再问你一下吗,就是什么时候可以直接在后面加.pack(),比如:e=Entry(...).pack()。有时候我直接加的也没报错,这里为什么就会报错了?还有就是在Button里面的command参数为什么不能加括号,加与没加区别在哪里呢?希望可以得到解答,非常感谢您!{:7_123:}
页: [1]
查看完整版本: 关于GUI的求助