หลังจากที่เรานั้นได้ทำการเรียนรู้เกี่ยวกับการใช้งาน GUI (จียูไอ)  ในบทความ GUI คืออะไร จียูไอ คือการนำเอารูปภาพ หรือสัญลักษณ์มาใช้ในการสื่อความหมายระหว่างผู้ใช้ กับตัวโปรแกรม,และบทความ วิธีการเปลี่ยนภาพพื้นหลัง GUI (จียูไอ) ของโมดูล Tkinter (ทีเคอินเตอร์)  กันไปบ้างแล้วในบทความนี้เราจะมาแนะนำการส่งค่าจากโมดูลที่เราเขียนรับค่าจากผู้ใช้ ผ่าน GUI (จียูไอ) ไปยังโมดูลอื่นๆ

 

ทำไมต้อง ส่งค่าที่รับจากผู้ใช้ผ่าน GUI (จียูไอ) ไปยังโมดูลอื่นๆ

           โดยปกติแล้วนั้นเราสามารถ เขียนโมดูลของเราให้อยู่ร่วมกับโมดูล GUI (จียูไอ) ได้ แต่ถ้าหากโมดูลมของเรานั้นมีขนาดใหญ่และยังใส่โปรแกรม GUI (จียูไอ) เข้าไปเสริมก็จะทำให้ยิ่งขึ้นไปอีกดังนั้นเราจึงควรแยกระหว่างโมดูลหลักและโมดูล GUI (จียูไอ)   เพื่อความสะดวกในการแก้ไข ปรับปรุง และพัฒนา

 

วิธีการส่งค่าที่รับจากผู้ใช้ผ่าน GUI (จียูไอ) ไปยังโมดูลอื่นๆ

           ด้านล่างจะโค้ดตัวอย่างระหว่าง  โมดูล GUI (จียูไอ) กับโมดูล หลักของเรา โดยเราจะไปดูที่โมดูล GUI (จียูไอ)  กันก่อน

# -*- coding: utf-8 -*-
import tkinter as tk
from tkinter import filedialog
import re,time
class sum(tk.Tk):  #class สำหรับการรับค่าจากผู้ใช้
    def __init__(self):
        tk.Tk.__init__(self)
        self.geometry('500x400')
        self.title('OpenERP')
        self.configure(background='#d2dae2')
        self.label = tk.Label(self,text='Login',font='times 20',bg='#d2dae2')
        self.label.pack()

        self.hostname = tk.Label(self,text='hostname:',font='times 18',bg='#d2dae2')
        self.hostname.place(x=0,y=50)
        self.content2 = tk.StringVar()
        self.content2.set("")
        self.hostnamei = tk.Entry(self,bd="2",textvariable=self.content2)
        self.hostnamei.place(x=200,y=58,width=200)

        self.database = tk.Label(self,text='Database:',font='times 18',bg='#d2dae2')
        self.database.place(x=0,y=80)
        self.content3 = tk.StringVar()
        self.content3.set('')
        self.databasei = tk.Entry(self,bd="2",textvariable=self.content3)
        self.databasei.place(x=200,y=88,width=200)

        self.user = tk.Label(self, text='User:', font='times 18', bg='#d2dae2')
        self.user.place(x=0,y=110)
        self.content4 = tk.StringVar()
        self.content4.set('')
        self.useri = tk.Entry(self, bd="2",textvariable=self.content4)
        self.useri.place(x=200,y=118,width=100)

        self.password = tk.Label(self, text='password:', font='times 18', bg='#d2dae2')
        self.password.place(x=0,y=140)
        self.content5 = tk.StringVar()
        self.content5.set('')
        self.passwordi = tk.Entry(self, bd="2",show='*',textvariable=self.content5)
        self.passwordi.place(x=200,y=148,width=100)

        self.path = tk.Label(self, text='Path Webdriver', font='times 18', bg='#d2dae2')
        self.path.place(x=0, y=170)
        self.content = tk.StringVar()
        self.content.set('')
        self.pathi = tk.Entry(self, bd="2", textvariable=self.content)
        self.pathi.place(x=200, y=178, width=200)

        line_text = '---------------------------------------------------------------'
        self.line = tk.Label(self, text=line_text, font='times 18', bg='#d2dae2')
        self.line.place(x=0,y=200)

        self.testdata = tk.Label(self, text='TestData', font='times 18', bg='#d2dae2')
        self.testdata.place(x=200,y=200)


        self.quo = tk.Label(self, text='amount of Quotation:', font='times 18', bg='#d2dae2')
        self.quo.place(x=0,y=230)
        self.content7 = tk.StringVar()
        self.content7.set('10')
        self.quoi = tk.Entry(self, bd="2",textvariable = self.content7)
        self.quoi.place(x=200,y=238,width=238)

        self.month = tk.Label(self, text='month:', font='times 18', bg='#d2dae2')
        self.month.place(x=0,y=260)
        self.content8 = tk.StringVar()
        self.content8.set('01,02,03,04')
        self.monthi = tk.Entry(self, bd="2",textvariable=self.content8)
        self.monthi.place(x=200,y=268,width=200)

        self.year = tk.Label(self, text='year:', font='times 18', bg='#d2dae2')
        self.year.place(x=0,y=292)
        self.content9= tk.StringVar()
        self.content9.set('2018')
        self.yeari = tk.Entry(self, bd="2",textvariable=self.content9)
        self.yeari.place(x=200,y=298,width=200)


        self.b1 = tk.Button(self, text='browse',bg = 'blue',fg = 'white'
            ,command = self.browse)
        self.b1.place(x=410,y=178) #browser

        self.b2 = tk.Button(self, text='submit', bg='blue', fg='white'
                            ,command = self.submit)
        self.b2.place(x=200,y=350)  # submit

    def browse(self):
        self.filename =  filedialog.askopenfilename(initialdir="/", title="Select file",
                                     filetypes=(("files", "*.exe"), ("all files", "*.*")))
        print(self.filename)
        path = self.filename
        self.content.set(path)

    def submit(self):
        print("submit")
        tk.Tk.quit(self)

'-------------------------------------------------------------------------------------------'

def regulare(pattern1,text):   #โมดูลแยกคำ 
    print('patt',pattern1)
    print("text",text)
    regex = re.compile(pattern=r'%s'%pattern1)  # กำหนดแพทเทิร์น
    regex = regex.findall(text)  # หาคีย์เวริดจากแพทเทิร์น
    print(regex)
    return regex
'-------------------------------------------------------------------------------------------'
app = sum()  #นำออบเจคมารองรับคลาส sum เพื่อรับค่าจากผู้ใช้ผ่าน GUI
app.mainloop()

class sendvalue:  #class การส่งค่าข้อมูลเพื่อให้โมดูลอื่นเรียกใช้ในโดมูล โดยคลาสนี้จะรีเทรินค่าๆต่างออกโดยใช้
                  #ออบเจคที่เราใช้ในการรับค่าจากผู้ใช้ผ่าน GUI  (ในที่นี้ ออบเจค คือ app)
    def __init__(self):
        print("Ready Send Key")

    def send_path(self):
        return app.pathi.get() #str

    def send_month(self):
        return regulare('\w+', app.monthi.get()) #list

    def send_year(self):
        return app.yeari.get() #str

    def send_quot(self):
        return app.quoi.get() #int

    def send_url(self):
        return app.hostnamei.get()+"?db="+ app.databasei.get() #str

    def send_user(self):
        return app.useri.get() #str

    def send_pass(self):
        return app.passwordi.get()

         

                โค้ดต่อมาจะเป็นโมดูลหลักของเราที่จะนำค่าที่ได้จากผู้ใช้ผ่าน GUI (จียูไอ)  เพียงเท่านี้เราก็สามารถรับค่าจาก GUI (จียูไอ) ได้แล้ว

import ddd as tk  #อิมพอร์ตโมดูลที่รับค่าจากผู้ใช้มา แล้วนำตัวแปรมารับค่ารีเทิร์นของเมธอดต่างๆ
a = tk.sendvalue()
path = a.send_path()
month = a.send_month()
year = a.send_year()
Quot = int(a.send_quot())
open_erp = a.send_url()
user_id = a.send_user()
password = a.send_pass()
print(path,month,year,Quot)

 

สามารถศึกษาเพิ่มเติมได้จากบทความ

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
ลดหย่อนภาษีได้ปี 67 สูงสุด 50,000 มีเงือนไขอย่างไรมาดุ
โดย Anonymous อ 31 ธ.ค. 2023 10:37 am บอร์ด ถาม - ตอบ ธุรกิจ กฏหมาย ภาษี บัญชี
0
428
อ 31 ธ.ค. 2023 10:37 am โดย บุคคลทั่วไป View Topic ลดหย่อนภาษีได้ปี 67 สูงสุด 50,000 มีเงือนไขอย่างไรมาดุ
เซ็นเซอร์ตรวจจับเสียง เอาไปใช้ทำอะไรได้บ้าง ทำโปรเจ็ค IOT
โดย Anonymous ส 30 ธ.ค. 2023 4:28 am บอร์ด IOT - Internet of things
2
809
ส 30 ธ.ค. 2023 10:48 pm โดย mindphp View Topic เซ็นเซอร์ตรวจจับเสียง เอาไปใช้ทำอะไรได้บ้าง ทำโปรเจ็ค IOT
มีเว็บที่เปิดเป็น localhost ใช้งานได้อยู่ มีวิธีไหนบ้างครับ ที่จะทำให้คนเข้าถึงออนไลน์ได้
โดย Anonymous ส 30 ธ.ค. 2023 4:18 am บอร์ด Programming - PHP
1
389
ส 30 ธ.ค. 2023 10:47 pm โดย mindphp View Topic มีเว็บที่เปิดเป็น localhost ใช้งานได้อยู่ มีวิธีไหนบ้างครับ ที่จะทำให้คนเข้าถึงออนไลน์ได้
ในฐานะผู้ดูแลระบบ (System Administrator) ก่อนเข้าช่วงหยุดยาว เตรียมตัวแบบนี้เพื่อให้หยุดได้อย่างไร้กังวน
โดย mindphp พฤ 28 ธ.ค. 2023 12:20 pm บอร์ด Linux - Web Server
0
609
พฤ 28 ธ.ค. 2023 12:20 pm โดย mindphp View Topic ในฐานะผู้ดูแลระบบ (System Administrator) ก่อนเข้าช่วงหยุดยาว เตรียมตัวแบบนี้เพื่อให้หยุดได้อย่างไร้กังวน
แก้ปัญหา Google Chrome เข้าหน้าเว็บไม่ได้ขึ้น ERROR SSL Key แต่ใช้ browser ตัวอื่นเข้าได้หมด
โดย mindphp พฤ 28 ธ.ค. 2023 7:11 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
362
พฤ 28 ธ.ค. 2023 7:11 am โดย mindphp View Topic แก้ปัญหา Google Chrome เข้าหน้าเว็บไม่ได้ขึ้น ERROR SSL Key แต่ใช้ browser ตัวอื่นเข้าได้หมด
ทำไมการย้ายโดเมนมักแนะนำให้ดำเนินการก่อนหมดอายุ 30 วัน มาดูรายละเอียดกัน Domain Tranfer มีกี่ขั้นตอน
โดย mindphp พฤ 28 ธ.ค. 2023 6:54 am บอร์ด Microsoft Office Knowledge & line & Etc
0
450
พฤ 28 ธ.ค. 2023 6:54 am โดย mindphp View Topic ทำไมการย้ายโดเมนมักแนะนำให้ดำเนินการก่อนหมดอายุ 30 วัน มาดูรายละเอียดกัน Domain Tranfer มีกี่ขั้นตอน
วิธีแชร์ภาพจาก Canva ไปที่ Facebook Page
โดย vibeday พฤ 28 ธ.ค. 2023 12:42 am บอร์ด Microsoft Office Knowledge & line & Etc
0
373
พฤ 28 ธ.ค. 2023 12:42 am โดย vibeday View Topic วิธีแชร์ภาพจาก Canva ไปที่ Facebook Page
โฆษณา LINE ทางเลือกใหม่ของแบรนด์ในยุคออนไลน์
โดย admeadme พ 27 ธ.ค. 2023 3:38 pm บอร์ด Share Knowledge
0
402
พ 27 ธ.ค. 2023 3:38 pm โดย admeadme View Topic โฆษณา LINE ทางเลือกใหม่ของแบรนด์ในยุคออนไลน์