เริ่มสร้างแอปเดสก์ท็อปใน Python ด้วยไลบรารี Tkinter GUI

เริ่มสร้างแอปเดสก์ท็อปใน Python ด้วยไลบรารี Tkinter GUI

Tkinter เป็นชุดเครื่องมือ Graphical User Interface (GUI) ที่คุณควรลองใช้หากคุณต้องการสำรวจพลังของ Python ในการสร้างแอปเดสก์ท็อป





เรามาดูพื้นฐานของโมดูล Tkinter GUI





windows ตรวจไม่พบการตั้งค่าพร็อกซีของเครือข่ายนี้โดยอัตโนมัติ windows 10

ตั้งค่า Tkinter

โดยปกติคุณไม่จำเป็นต้องติดตั้ง tkinter แยกต่างหากหากคุณได้ติดตั้ง Python เวอร์ชันที่ใหม่กว่า โดยเริ่มด้วย Python 3 อย่างไรก็ตาม ไลบรารีอาจไม่ทำงานกับ Python เวอร์ชันเก่า นี่เป็นปัญหาทั่วไปสำหรับผู้ใช้ Mac และ Linux เนื่องจากระบบปฏิบัติการเหล่านี้มักมาพร้อมกับ Python เวอร์ชันเก่าโดยค่าเริ่มต้น





โดยทั่วไป ในการใช้ tkinter โมดูล ตรวจสอบให้แน่ใจว่าคุณดาวน์โหลดและติดตั้ง Python เวอร์ชันล่าสุดที่เข้ากันได้บนพีซีของคุณจากทางการ python.org เว็บไซต์.

หากคุณใช้ Mac หรือ คุณสามารถดาวน์โหลด ActiveTcl เวอร์ชันล่าสุด a tkinter คอมไพเลอร์จาก ActiveState .



วิธีใช้ Tkinter

Tkinter ขึ้นอยู่กับในตัว TK ระดับ. และสรุปเหตุการณ์ทั้งหมดภายใน GUI ใน a เมนลูป . ดังนั้น เมนลูป กระดาษห่อทำให้ .ของคุณ tkinter รหัสปฏิบัติการได้

เพื่อเริ่มต้นกับ tkinter :





from tkinter import Tk
Tk().mainloop()

การรันโค้ดด้านบนจะทำให้ว่างเปล่า tkinter กรอบ.

อย่างไรก็ตาม คุณสมบัติการปรับแต่งของ Tkinter นั้นอยู่ในวิดเจ็ตในตัว





หากต้องการใช้วิดเจ็ตเหล่านี้ คุณสามารถนำเข้าจาก tkinter โดยแทนที่ จาก tkinter นำเข้า Tk กับ:

from tkinter import *
t = Tk()
t.mainloop()

คุณยังสามารถปรับขนาดหน้าต่างด้วยปุ่ม เรขาคณิต ฟังก์ชั่นแล้วระบุชื่อเรื่องโดยใช้ ชื่อ วิดเจ็ตของ tkinter :

t = Tk()
t.geometry('600x600')
t.title('Tk Tutorial')
t.mainloop()

วิดเจ็ตฉลาก Tkinter

Tkinter ให้คุณเขียนข้อความธรรมดาโดยตรงไปยัง GUI โดยใช้ ฉลาก วิดเจ็ต:

t = Tk()
Label(t, text = 'MUO Tkinter tutorial').grid()
t.mainloop()

NS ตาราง () อย่างไรก็ตาม วิธีการนี้เป็นทางเลือกแทน หีบห่อ() กระบวนการ. มันติดวิดเจ็ตของคุณไว้ที่ GUI ทำให้มองเห็นได้

คุณยังสามารถระบุแบบอักษรสำหรับ .ของคุณ ฉลาก ข้อความ:

t = Tk()
Label(t, text = 'MUO Tkinter tutorial', font=(60)).grid()
t.mainloop()

การทำงานกับวิดเจ็ตปุ่มใน Tkinter

ปุ่มคือวิดเจ็ตที่ใช้บ่อยที่สุดใน tkinter . และคุณสามารถเพิ่มปุ่มที่คลิกได้เหล่านี้ลงใน GUI ของคุณโดยใช้วิดเจ็ตปุ่มต่างๆ ในตัว

ต่อไปนี้คือวิธีเพิ่มปุ่มหลักใน GUI ของคุณโดยใช้ปุ่ม ปุ่ม วิดเจ็ต:

t = Tk()
Button(t, text = 'Clickable', bg = 'black', fg = 'white').grid()
t.mainloop()

NS bg และ fg คำหลักอธิบายสีพื้นหลังของปุ่มและสีของข้อความภายในตามลำดับ

คุณยังสามารถปรับขนาดของปุ่มได้โดยใส่ปุ่ม ความสูง และ ความกว้าง พารามิเตอร์:

t = Tk()
Button(t, text = 'Clickable', bg = 'black', fg = 'white', , ).grid()
t.mainloop()

นี่คือผลลัพธ์สำหรับสิ่งนั้น:

ข้อผิดพลาด i/o ของฮาร์ดไดรฟ์

และหากคุณต้องการทำให้ปุ่มดูน่าดึงดูดยิ่งขึ้น คุณสามารถใส่ a การบรรเทา คีย์เวิร์ดแล้วปรับความกว้างของเส้นขอบ:

t = Tk()
Button(t, text='Clickable', bg='blue', fg='white',
height=2, width=10, relief=RAISED, borderwidth=6).grid()
t.mainloop()

และดูเหมือนว่านี้:

แทนที่ ที่ยกขึ้น กับ แบน เพื่อดูว่ามันเกิดขึ้นได้อย่างไร

คุณสามารถเพิ่มปุ่มได้มากเท่าที่คุณต้องการ แต่คุณต้องระวังอย่าให้เนื้อหาทับซ้อนกัน

เพื่อหลีกเลี่ยงการทับซ้อนกัน คุณสามารถระบุตำแหน่งแถวและคอลัมน์สำหรับแต่ละปุ่มได้:

t = Tk()
Button(t, text=1, bg='black', fg='white').grid(row=1, column=1)
Button(t, text=2, bg='black', fg='white').grid(row=2, column=1)
Button(t, text=3, bg='black', fg='white').grid(row=3, column=1)
Button(t, text=4, bg='black', fg='white').grid(row=4, column=1)
t.mainloop()

เป็นทางเลือก สั่งการ อย่างไรก็ตาม คีย์เวิร์ดเพิ่มเหตุการณ์ลงใน ปุ่ม วิดเจ็ต โดยพื้นฐานแล้วจะยึดฟังก์ชันเสริมที่จัดการเหตุการณ์บางอย่างเมื่อคุณคลิกปุ่ม

ตัวอย่างเช่น โค้ดด้านล่างจะคูณค่าของแต่ละปุ่มด้วย 6 เมื่อคุณคลิก และเป็นไปตามฟังก์ชันที่กำหนดไว้ล่วงหน้า:

def buttonpress(r):
r = 6*r
Label(t, text=r, font=(60)).grid(row=5, column=2)
t = Tk()
Button(t, text = 1, bg = 'black', fg = 'white', width = 10, height = 2,
command = lambda:buttonpress(1)).grid(row=1, column = 1, pady = 6)
Button(t, text = 2, bg = 'black', fg = 'white', width = 10,
command = lambda:buttonpress(2)).grid(row = 2, column = 1, pady = 6)
Button(t, text = 3, bg = 'black', fg = 'white', width = 10,
command = lambda:buttonpress(3)).grid(row = 3, column = 1, pady = 6)
Button(t, text = 4, bg = 'black', fg = 'white', width = 10,
command = lambda:buttonpress(4)).grid(row = 4, column = 1, pady = 6)
t.mainloop()

ในรหัสข้างต้น ปุ่มกด จัดการเหตุการณ์การคูณ NS ปุ่ม วิดเจ็ตจากนั้นชี้ไปที่ตัวจัดการเหตุการณ์นั้นโดยใช้นิรนาม แลมบ์ดา การทำงาน.

และถ้าคุณกังวลเรื่อง แผ่นรอง คีย์เวิร์ดจะแยกแต่ละปุ่มออกจากแถวอย่างชัดเจน แทนที่สิ่งนี้ด้วย padx แยกปุ่มข้ามคอลัมน์ และคุณสามารถใช้คำหลักทั้งสองพร้อมกันเพื่อแยกปุ่มออกจากทั้งสองแกนตามที่คุณต้องการ

ที่กล่าวว่าคุณไม่ต้องการสร้างวงล้อใหม่สำหรับทุกปุ่มเหมือนที่คุณทำในรหัสก่อนหน้า การดำเนินการนี้ช้าลง อีกทั้งทำให้โค้ดของคุณอ่านยากและจำกัดขอบเขตให้แคบลง

แต่คุณทำได้ ใช้ for loop เพื่อหลีกเลี่ยงความซ้ำซากจำเจนี้

ดังนั้นนี่คือโค้ดด้านบนที่สั้นกว่าและดีกว่า:

def buttonpress(r):
r = 6*r
Label(t, text = r, font = (60)).grid(row = 5, column = 2)
t = Tk()
a = [1, 4, 6, 7]
for i in a:
j = lambda y = i:buttonpress(y)
Button(t, text = i, bg = 'black', fg = 'white', width = 10, height = 2,
command=j).grid(row = i, column = 1, pady = 6)
t.mainloop()

มาสำรวจพลังของ .กันดีกว่า สำหรับ วนซ้ำเพื่อเพิ่มปุ่มเมนูไปยัง GUI ของคุณ:

from tkinter import *
t = Tk()
buttons = ['Files', 'Dashboard', 'Menu', 'Settings', 'Help']
m = 0
for i in range(len(buttons)):
# Get each text in the buttons array using a list index as m increases.
# Then let the column increase by 1 through the length of the array:

Menubutton(t, text=buttons[m], bg='blue', fg='white').grid(row=5, column=i)
m += 1
t.mainloop()

การเพิ่มปุ่มตรวจสอบให้กับ GUI ของคุณนั้นค่อนข้างง่ายเช่นกัน:

t = Tk()
Checkbutton(t, text = 'Select option').grid()
t.mainloop()

อย่าลังเลที่จะคูณปุ่มตรวจสอบนั้นโดยใช้ สำหรับ วนซ้ำเหมือนที่เราทำก่อนหน้านี้

วิธีสร้างเมนูแบบเลื่อนลงด้วยวิดเจ็ตเมนูของ Tkinter

NS เมนู วิดเจ็ตช่วยให้คุณออกแบบเมนูดรอปดาวน์ที่คลิกได้ใน tkinter .

ตามที่ระบุไว้ก่อนหน้านี้ tkinter มีตัวเลือกวิดเจ็ตมากมาย และคุณจะใช้บางส่วนในขณะออกแบบเมนูดรอปดาวน์ของคุณ

ต่อไปนี้คือตัวเลือกวิดเจ็ตทั่วไปบางส่วนที่คุณจะพบขณะทำดรอปดาวน์:

  • add_cascade: จะแสดงป้ายเมนูและติดไว้ที่ที่มันอยู่
  • add_separator: มันแบ่งเขตเมนูย่อยและจัดกลุ่มเป็นเมนูย่อยบนและล่าง
  • add_command: นี่คือที่ที่คุณตั้งชื่อเมนูย่อยของคุณ ในท้ายที่สุด จะยอมรับอาร์กิวเมนต์คำสั่งซึ่งคุณสามารถระบุตัวจัดการเหตุการณ์ได้

นี่คือตัวอย่างแบบเลื่อนลงที่ใช้สามตัวเลือกเหล่านี้:

from tkinter import *
t = Tk()
fileOptions = ['New', 'open', 'Save', 'Save as']
fileOptionsAfterseparator = ['Import', 'Export', 'Exit']
viewOptions = ['Transform', 'Edit', 'Create']
menuBar = Menu(t)
file = Menu(menuBar, tearoff=0)
for i in fileOptions:
file.add_command(label=i, command=None)
file.add_separator()
for i in fileOptionsAfterseparator:
file.add_command(label=i, command=None)
menuBar.add_cascade(label='File', menu=file)
View = Menu(menuBar, tearoff=0)
for i in viewOptions:
View.add_command(label=i, command=None)
menuBar.add_cascade(label='View', menu=View)
t.config(menu=menuBar)
t.mainloop()

ดูว่ามีลักษณะอย่างไร:

เมนูตัวเลือก Tkinter

หนึ่ง เมนูตัวเลือก , ไม่เหมือนกับ เมนู ดรอปดาวน์ เปลี่ยนป้ายกำกับเป็นตัวเลือกที่เลือก

แม้ว่าคุณจะระบุค่าป้ายกำกับเริ่มต้นสำหรับเมนูตัวเลือกได้ แต่ก็ไม่มีป้ายกำกับตามค่าเริ่มต้น

ที่เกี่ยวข้อง: แนวคิดโครงการ Python เหมาะสำหรับผู้เริ่มต้น

นี่คือวิธีการสร้างเมนูตัวเลือกใน tkinter :

t = Tk()
Omenu = StringVar() #set the variable type of the options
Omenu.set('MUO') #specify a default value for the menu icon
OptionMenu(t, Omenu, 'MUO', 'Amazon', 'Tutorial').grid()
t.mainloop()

สร้างแอปเดสก์ท็อปที่นำกลับมาใช้ใหม่ได้ด้วย Tkinter

Tkinter นำเสนอคุณสมบัติมากมายที่ช่วยให้คุณสร้างแอปเดสก์ท็อป GUI แบบโต้ตอบได้ แม้ว่ามันอาจจะไม่มีคุณลักษณะการตกแต่งที่ยืดหยุ่นมากมายเช่นโมดูล Python GUI อื่น ๆ แต่ก็ยังเป็นเครื่องมือที่มีประโยชน์ที่ควรค่าแก่การสำรวจ และในขณะที่ตัวอย่างนี้แสดงเพียงแนวคิดพื้นฐานบางส่วนเท่านั้น tkinter นำเสนอคุณสมบัติขั้นสูงเพิ่มเติมที่คุณสามารถทดลองใช้ได้

ทำไมอีเมลของฉันไม่อัปเดตบน Android

ที่กล่าวว่า คุณสามารถสร้างเครื่องคิดเลขเดสก์ท็อป GUI สร้างโปรแกรมแก้ไขข้อความขนาดเล็ก หรือแม้แต่สร้างแอปเดสก์ท็อป GUI เพื่อจัดการสินค้าคงคลังของคุณ หากคุณต้องการขยายปีกของคุณและกลายเป็น GUI หลักบนเดสก์ท็อป คุณสามารถดูโมดูล GUI อื่นๆ ของ Python ได้

แบ่งปัน แบ่งปัน ทวีต อีเมล กุย? ส่วนต่อประสานกราฟิกกับผู้ใช้คืออะไร?

คุณใช้ GUI หรือไม่? โอกาสที่คุณมีเพราะคุณใช้มันทุกวัน

อ่านต่อไป
หัวข้อที่เกี่ยวข้อง
  • การเขียนโปรแกรม
  • Python
เกี่ยวกับผู้เขียน อิดิโซ โอมิโซลา(94 บทความที่ตีพิมพ์)

Idowu หลงใหลเกี่ยวกับเทคโนโลยีอัจฉริยะและประสิทธิภาพการทำงานทุกอย่าง ในเวลาว่าง เขาเล่นไปรอบๆ กับการเขียนโค้ดและเปลี่ยนไปเล่นกระดานหมากรุกเมื่อรู้สึกเบื่อ แต่เขาก็ชอบที่จะแยกตัวออกจากงานประจำบ้างเป็นบางครั้ง ความหลงใหลในการแสดงให้ผู้คนได้รู้จักเทคโนโลยีสมัยใหม่กระตุ้นให้เขาเขียนมากขึ้น

เพิ่มเติมจาก Idowu Omisola

สมัครรับจดหมายข่าวของเรา

เข้าร่วมจดหมายข่าวของเราสำหรับเคล็ดลับทางเทคนิค บทวิจารณ์ eBook ฟรี และดีลพิเศษ!

คลิกที่นี่เพื่อสมัครสมาชิก