对于想了解之后Tkinter生存时钟倒回的读者,本文将是一篇不可错过的文章,并且为您提供关于*#【Python】【基础知识】【模块】【tkinter】【学用tkinter画图/制作窗口】、GUI的最终
对于想了解之后Tkinter生存时钟倒回的读者,本文将是一篇不可错过的文章,并且为您提供关于*#【Python】【基础知识】【模块】【tkinter】【学用 tkinter 画图 / 制作窗口】、GUI的最终选择 Tkinter(一):Tkinter最初体验、ImportError:在pyInstaller之后没有名为“ tkinter”的模块、python gui tkinter快速入门教程 | python tkinter tutorial的有价值信息。
本文目录一览:- 之后Tkinter生存时钟倒回
- *#【Python】【基础知识】【模块】【tkinter】【学用 tkinter 画图 / 制作窗口】
- GUI的最终选择 Tkinter(一):Tkinter最初体验
- ImportError:在pyInstaller之后没有名为“ tkinter”的模块
- python gui tkinter快速入门教程 | python tkinter tutorial
之后Tkinter生存时钟倒回
我注意到在我的Tkinter版本中,after()调用不能在系统时钟倒回存活。
如果after(x,func)被调用,并且系统时钟被退回, func将仅在时钟返回到倒回+ x毫秒之前被调用。
我认为这是因为Tkinter使用系统时钟而不是“time.clock”(程序运行的时间量)。
我只在Windows上testing过,也许是因为我有一个老版本的Tkinter。 我希望我的应用程序能够在networking上同步时钟的计算机上工作。
如何正确检测主窗口的拐angular半径
Windows VK_常量如何声明?
可能:执行Qt3和Qt4代码的程序?
Win32 OpenFileDialog不会筛选* .DOCX快捷方式
如何将控件添加到另一个用户控件的窗体上的面板
有人有一个简单的解决scheme?
可以在Windows Phone 8.1上的ViewportControl支持?
Windows上的Python和XAMPP:如何?
mayavi窗口停止出现
我可以使在Windows上运行的Apache区分大小写吗?
Python脚本不能删除Windows中的Git文件
如何创建一个变量来保存从程序执行时开始的计数器(以秒为单位)?
*#【Python】【基础知识】【模块】【tkinter】【学用 tkinter 画图 / 制作窗口】
Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下:
Tkinter:
Tkinter 模块 (Tk 接口) 是 Python 的标准 Tk GUI 工具包的接口 .
Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。
Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。
wxPython:
wxPython 是一款开源软件
是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能健全的 GUI 用户界面。
Jython:
Jython 程序可以和 Java 无缝集成。
除了一些标准模块,Jython 使用 Java 的模块。
Jython 几乎拥有标准的 Python 中不依赖于 C 语言的全部模块。
比如,Jython 的用户界面将使用 Swing,AWT 或者 SWT。
Jython 可以被动态或静态地编译成 Java 字节码。
------ 本专题只介绍 tkinter------
需要注意的是:
1、tkinter 是每个 python 版本都内置的一个图形库
2、在使用 turtle 库的时候 turtle 这个库是会调用 tkinter 这个库的
3、这个库在 py2 和 py3 里的名字是不一样的 python2 叫 Tkinter,python3 叫 tkinter
使用 tkinter 画图:
1、画圆形
2、画直线
3、画方形
4、制作 Windows 窗口
5、tkinter 中各属性及方法的使用介绍:
一、画圆形
原题:
使用 tkinter 库画圆形。
原题给出的代码:
#!/usr/bin/python
# encoding=utf-8
# -*- coding: UTF-8 -*-
# 画图,学用circle画圆形。
if __name__ == ''__main__'':
from tkinter import *
canvas = Canvas(width=800, height=600, bg=''yellow'')
canvas.pack(expand=YES, fill=BOTH)
k = 1
j = 1
for i in range(0,26):
canvas.create_oval(310 - k,250 - k,310 + k,250 + k, width=1)
k += j
j += 0.3
mainloop()
输出结果:
二、画直线
原题:画图,学用 line 画直线
原题给出的代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
if __name__ == ''__main__'':
from tkinter import *
canvas = Canvas(width=300, height=300, bg=''green'')
canvas.pack(expand=YES, fill=BOTH)
x0 = 263
y0 = 263
y1 = 275
x1 = 275
for i in range(19):
canvas.create_line(x0,y0,x0,y1, width=1, fill=''red'')
x0 = x0 - 5
y0 = y0 - 5
x1 = x1 + 5
y1 = y1 + 5
x0 = 263
y1 = 275
y0 = 263
for i in range(21):
canvas.create_line(x0,y0,x0,y1,fill = ''red'')
x0 += 5
y0 += 5
y1 += 5
mainloop()
输出效果:
三、画方形
原题:
画图,学用 rectangle 画方形。
程序分析:
rectangle(int left, int top, int right, int bottom)
参数说明:(left ,top) 为矩形的左上坐标,(right,bottom) 为矩形的右下坐标,两者可确定一个矩形的大小
原题给出的代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
if __name__ == ''__main__'':
from tkinter import *
root = Tk()
root.title(''Canvas'')
canvas = Canvas(root,width = 400,height = 400,bg = ''yellow'')
x0 = 263
y0 = 263
y1 = 275
x1 = 275
for i in range(19):
canvas.create_rectangle(x0,y0,x1,y1)
x0 -= 5
y0 -= 5
x1 += 5
y1 += 5
canvas.pack()
root.mainloop()
输出结果:
四、使用 tkinter 制作 Windows 窗口:
源码:
#!/usr/bin/python
# -*- coding: GBK -*-
import tkinter
#import tkMessageBox #Py2.0中
import tkinter.messagebox #Py3.0中
top = tkinter.Tk()
def helloCallBack():
tkinter.messagebox.showinfo( "Hello Python", "Hello Runoob")
B = tkinter.Button(top, text ="sss", command = helloCallBack)
B.pack()
# 进入消息循环
top.mainloop()
效果:
点击按钮,出现:
其中 Tkinter 库的使用还需深入学习!
五、tkinter 库的使用介绍:(上述代码中已使用的)
tkinter 包含的方法:
>>> dir(tkinter)
[''ACTIVE'', ''ALL'', ''ANCHOR'', ''ARC'', ''BASELINE'', ''BEVEL'', ''BOTH'', ''BOTTOM'', ''BROWSE'', ''BUTT'', ''BaseWidget'', ''BitmapImage'', ''BooleanVar'', ''Button'', ''CASCADE'', ''CENTER'', ''CHAR'', ''CHECKBUTTON'', ''CHORD'', ''COMMAND'', ''CURRENT'', ''CallWrapper'', ''Canvas'', ''Checkbutton'', ''DISABLED'', ''DOTBOX'', ''DoubleVar'', ''E'', ''END'', ''EW'', ''EXCEPTION'', ''EXTENDED'', ''Entry'', ''Event'', ''EventType'', ''FALSE'', ''FIRST'', ''FLAT'', ''Frame'', ''GROOVE'', ''Grid'', ''HIDDEN'', ''HORIZONTAL'', ''INSERT'', ''INSIDE'', ''Image'', ''IntVar'', ''LAST'', ''LEFT'', ''Label'', ''LabelFrame'', ''Listbox'', ''MITER'', ''MOVETO'', ''MULTIPLE'', ''Menu'', ''Menubutton'', ''Message'', ''Misc'', ''N'', ''NE'', ''NO'', ''NONE'', ''NORMAL'', ''NS'', ''NSEW'', ''NUMERIC'', ''NW'', ''NoDefaultRoot'', ''OFF'', ''ON'', ''OUTSIDE'', ''OptionMenu'', ''PAGES'', ''PIESLICE'', ''PROJECTING'', ''Pack'', ''PanedWindow'', ''PhotoImage'', ''Place'', ''RADIOBUTTON'', ''RAISED'', ''READABLE'', ''RIDGE'', ''RIGHT'', ''ROUND'', ''Radiobutton'', ''S'', ''SCROLL'', ''SE'', ''SEL'', ''SEL_FIRST'', ''SEL_LAST'', ''SEPARATOR'', ''SINGLE'', ''SOLID'', ''SUNKEN'', ''SW'', ''Scale'', ''Scrollbar'', ''Spinbox'', ''StringVar'', ''TOP'', ''TRUE'', ''Tcl'', ''TclError'', ''TclVersion'', ''Text'', ''Tk'', ''TkVersion'', ''Toplevel'', ''UNDERLINE'', ''UNITS'', ''VERTICAL'', ''Variable'', ''W'', ''WORD'', ''WRITABLE'', ''Widget'', ''Wm'', ''X'', ''XView'', ''Y'', ''YES'', ''YView'', ''__builtins__'', ''__cached__'', ''__doc__'', ''__file__'', ''__loader__'', ''__name__'', ''__package__'', ''__path__'', ''__spec__'', ''_cnfmerge'', ''_default_root'', ''_exit'', ''_flatten'', ''_join'', ''_magic_re'', ''_setit'', ''_space_re'', ''_splitdict'', ''_stringify'', ''_support_default_root'', ''_test'', ''_tkerror'', ''_tkinter'', ''_varnum'', ''commondialog'', ''constants'', ''enum'', ''getboolean'', ''getdouble'', ''getint'', ''image_names'', ''image_types'', ''mainloop'', ''messagebox'', ''re'', ''simpledialog'', ''sys'', ''wantobjects'']
>>>
tkinter 为 module 类型
tkinter.ACTIVE 为 str 类型
tkinter.ACTIVE.capitalize 为内置方法 / 函数
>>> type(tkinter)
<class ''module''>
>>> type(tkinter.ACTIVE)
<class ''str''>
>>> type(tkinter.ACTIVE.capitalize)
<class ''builtin_function_or_method''>
>>>
1、tkinter.messagebox
2、tkinter.Button
3、tkinter.Tk
————————(我是分割线)————————
参考:
1. RUNOOB.COM:
https://www.runoob.com/python/python-exercise-example56.html / 画圆
https://www.runoob.com/python/python-gui-tkinter.html / Python GUI 编程 (Tkinter)
https://www.runoob.com/python/python-tk-button.html / 制作窗口
https://www.runoob.com/python/python-exercise-example57.html / 画直线
https://www.runoob.com/python/python-exercise-example58.html / 画方形
2、https://zhidao.baidu.com/question/432270397607348804.html
备注:
初次编辑时间:2019 年 10 月 6 日 21:42:39
第一次修改时间:2019 年 10 月 7 日 10:31:36 / 除画圆外,增加了其他功能模块;
第二次修改时间:2019 年 10 月 7 日 15:45:12 / 以模块知识点命名,逐步深入学习该模块的使用方法和经典案例。
环境:Windows 7 / Python 3.7.2
GUI的最终选择 Tkinter(一):Tkinter最初体验
EasyGui就是一个简单的文字交互界面模块,从今天开始来开始学习Tkinter
Tkinter是Python标准的Gui库,它实际是建立在Tk技术上的,Tk最初是为Tcl(一门工具名语言)所涉及的,但由于其可移植性和灵活性高,加上非常容易使用,因此它逐渐被移植到许多脚本语言中,包括Perl、Ruby和Python。
所以 TK + interface = Tkinter
Tkinter是Python默认的GUI库。像IDLE就是用Tkinter设计出来的,因此直接导入Tkinter模块就可以了。
>>> import tkinter
>>>
注:我安装的python版本是3.6的,所以不需要单独安装Tkinter,但是这里也备注下,如果是2.7版本就需要安装,并linux系统下,安装命令为:
apt install python - tk
yum imstall python - tools
Tkinter最初体验
我们来以一个列子进入Tkinter学习吧。
import tkinter as tk
root = tk.Tk() #创建一个主窗口,用于容纳整个GUI程序
root.title("study python") #设置主窗口标题栏
#添加一个Label组件,Label组件是GUI程序中常用组件之一
#Label组件可以显示文本、图标或图片
#在这里我们让他显示指定的文本
thelable = tk.Label(root,text="这是我第一个tkinter程序窗口")
#然后调用Label组件的pack()方法,用于自动调节组件自身的尺寸
thelable.pack()
#注意,这个时候窗口还不会显示的。。。
#除非执行下面的这段代码,进入消息循环
root.mainloop()
执行结果
tkinter.mainloop()通常是程序的最后一行代码,执行后程序进入主事件循环。学习过界面的都知道一句名言:“Don''t call me,I will can you.”就是一旦进入主事件循环,就由Tkinter掌握一起了。
进阶版本
如果要写一个大的程序就需要把代码进行封装,在面向对象的语言中,就是封装成类,来看进阶版的例子。
1 import tkinter as tk
2
3 class App():
4 def __init__(self,root):
5 frame = tk.Frame(root)#创建框架,然后在里面添加一个Button按钮,框架一般是用于在复杂的布局找你起到将组件分组作用
6 frame.pack()
7 self.hi_there = tk.Button(frame,text="欢迎学习python",fg="bule",command=self.say_hi) #创建一个按钮组件,fg=foreground的缩写,就是设置前景色
8 self.hi_there.pack(side=tk.LEFT)
9 def say_hi(self):
10 print("python3学习要循序渐进")
11
12 root = tk.Tk()
13 app = App(root)
14 root.mainloop()
执行结果图:
程序跑起来,在窗口中出现“欢迎学习python”,单击后在IDIE接收到反馈信息,反馈信息为:python3学习要循序渐进.
可以通过修改pack()方法的side参数,参数可以设置LEFT、RIGHT、TOP和TOTTOM四个方位,默认设置是:side=tkinter.TOP
例如可以修改为左对齐,frame.pack(side=tk.LEFT),修改后程序如图:
如果想让按钮靠近中间位置,可以通过设置pack()方法的padx和pady参数自定义按钮的偏移位置:
frame.pack(side=tk.LEFT,padx=100,pady=100)
按钮也可以设置背景色,需要用到bg参数,就是background背景的缩写:
self.hi_there = tk.Button(frame, text="欢迎学习python",fg="blue",bg="black", command=self.say_hi)
来改版后的完整程序为:
1 import tkinter as tk
2
3 class App():
4 def __init__(self, root):
5 frame = tk.Frame(root)
6 #frame.pack()
7 # frame.pack(side=tk.LEFT)
8 frame.pack(side=tk.LEFT,padx=100,pady=100)
9 # self.hi_there = tk.Button(frame, text="欢迎学习python",fg="blue", command=self.say_hi)
10 self.hi_there = tk.Button(frame, text="欢迎学习python",fg="blue",bg="black", command=self.say_hi)
11 self.hi_there.pack(side=tk.LEFT)
12
13 def say_hi(self):
14 print("python3学习要循序渐进")
15
16 root = tk.Tk() #创建一个toplevel的根窗口,并把它作为一个参数传递给实例化对象app
17 app = App(root)
18 root.mainloop()
ImportError:在pyInstaller之后没有名为“ tkinter”的模块
我想做一个可执行文件,但是每次我运行它编写的.exe时ImportError: No module named
'tkinter'
,我在Stackowerflow上阅读的所有内容都对我没有帮助!
我的python程序很简单(ODE求解器),仅请求:
from math import*
from pylab import*
import numpy as np
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
我将我的副本粘贴prog.py
到C:\Python\Scripts
pyInstaller所在的文件夹中。我计算了命令行pyinstaller -F
eulersolver.py
,这prog.exe
在dist
文件夹中创建了一个。当我运行此代码时,我有
ImportError: No module named 'tkinter'
Failed to execute script prog
但是我的程序不使用此模块…您对我有什么建议或帮助吗?
作业系统: Windows64
*适用于Win64的 *Python: 3.5
注意: 我今天已经卸载/安装python 3次了(在阅读本网站和国外的文档之后)。
注2: 我仅将Python用于科学问题。我不是计算机科学家,所以在解释计算机内容时对我友善:S
python gui tkinter快速入门教程 | python tkinter tutorial
本文首发于个人博客https://kezunlin.me/post/d5c57f56/,欢迎阅读最新内容!
python tkinter tutorial
<!--more-->
Guide
main ui
messagebox
- showinfo()
- showwarning()
- showerror()
- askquestion()
- askokcancel()
- askyesno()
- askretrycancel()
- askyesnocancel()
filedialog
- asksaveasfilename()
- asksaveasfile()
- askopenfilename()
- askopenfile()
- askdirectory()
- askopenfilenames()
- askopenfiles()
demo
from numpy.random import seed, uniform
from numpy import uint8, uint16, load, save
from cv2 import imread, imwrite
from os import listdir, makedirs
from os.path import exists, basename
# for python 3
from tkinter import Tk, Frame, messagebox, filedialog, Button, Label, StringVar
class MyGUI():
def __init__(self):
self.root = Tk()
sw = self.root.winfo_screenwidth()
sh = self.root.winfo_screenheight()
ww = 700
wh = 200
x = (sw-ww) / 2
y = (sh-wh) / 2
self.root.title(''Image Compress Tool'')
# center
self.root.geometry("%dx%d+%d+%d" % (ww, wh, x, y))
# frame1
frame1 = Frame(self.root)
frame1.grid(row=0, column=0, sticky=''w'')
self.input_btn = Button(frame1, text="Input Folder", width=10, height=3, command=self.set_input_folder)
self.input_btn.pack(side=''left'')
self.input_label_text = StringVar()
self.input_label_text.set("Input Folder")
self.input_label = Label(frame1, textvariable=self.input_label_text, width=70, height=3)
self.input_label.pack(side=''left'')
# frame2
frame2 = Frame(self.root)
frame2.grid(row=1, column=0, sticky=''w'')
self.output_btn = Button(frame2, text="Output Folder", width=10, height=3, command=self.set_output_folder)
self.output_btn.pack(side=''left'')
self.output_label_text = StringVar()
self.output_label_text.set("Output Folder")
self.output_label = Label(frame2, textvariable = self.output_label_text, width=70, height=3)
self.output_label.pack(side=''left'')
# frame3
frame3 = Frame(self.root)
frame3.grid(row=2, column=0, sticky=''nw'')
self.run_btn = Button(frame3, text="执行加密", width=10, height=3, command=self.run_task)
self.run_btn.pack(side=''left'')
self.run_label_text = StringVar()
self.run_label_text.set("Ready")
self.run_label = Label(frame3, textvariable = self.run_label_text, width=70, height=3)
self.run_label.pack(side=''left'')
def mainloop(self):
self.root.mainloop()
def set_input_folder(self):
result = filedialog.askdirectory()
self.input_label_text.set(result)
def set_output_folder(self):
result = filedialog.askdirectory()
self.output_label_text.set(result)
def run_task(self):
input_folder = self.input_label_text.get()
output_folder = self.output_label_text.get()
#print("input_folder: "+input_folder)
#print("output_folder: "+output_folder)
if exists(input_folder):
#batch_compress(input_folder, output_folder)
self.run_label_text.set("Compress OK.")
messagebox.showinfo("Info", "Compress OK.")
else:
messagebox.showwarning("Warn", "Please input folder")
def gui():
app = MyGUI()
app.mainloop()
def main():
gui()
if __name__ =="__main__":
main()
snapshots
Reference
- tkinter demo
- tkinter docs
History
- 20190411: created.
Copyright
- Post author: kezunlin
- Post link: https://kezunlin.me/post/d5c57f56/
- Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.
今天关于之后Tkinter生存时钟倒回的分享就到这里,希望大家有所收获,若想了解更多关于*#【Python】【基础知识】【模块】【tkinter】【学用 tkinter 画图 / 制作窗口】、GUI的最终选择 Tkinter(一):Tkinter最初体验、ImportError:在pyInstaller之后没有名为“ tkinter”的模块、python gui tkinter快速入门教程 | python tkinter tutorial等相关知识,可以在本站进行查询。
本文标签: