ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

            หลังจากที่เรานั้นได้ทำการเรียนรู้เกี่ยวกับการใช้งาน 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)

 

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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
วิธีการนำข้อมูลคำอธิบายภาพออก ในโพสต์ของ php
โดย Ittichai_chupol พ 11 ธ.ค. 2019 7:03 pm บอร์ด PHP Knowledge
0
2
พ 11 ธ.ค. 2019 7:03 pm โดย Ittichai_chupol
โปรแกรมคำนวณเพซ
โดย prmindphp พ 11 ธ.ค. 2019 6:50 pm บอร์ด MindPHP News & Feedback
0
6
พ 11 ธ.ค. 2019 6:50 pm โดย prmindphp
ArrayList Java กับการหาค่าที่มากที่สุดแล้วลบออก
โดย Grammanano พ 11 ธ.ค. 2019 6:38 pm บอร์ด Share Knowledge
0
9
พ 11 ธ.ค. 2019 6:38 pm โดย Grammanano
การเขียน switch case ในภาษา C
โดย Grammanano พ 11 ธ.ค. 2019 5:52 pm บอร์ด Share Knowledge
0
8
พ 11 ธ.ค. 2019 5:52 pm โดย Grammanano
VDO - Introducing to Pace Calculator
โดย numtan5839 พ 11 ธ.ค. 2019 5:38 pm บอร์ด M097 - ตรีเนตร บูรณโพธิ์ทอง
1
8
พ 11 ธ.ค. 2019 5:47 pm โดย numtan5839
การลบข้อมูลจาก ArrayList ภาษา Java
โดย Grammanano พ 11 ธ.ค. 2019 5:32 pm บอร์ด Share Knowledge
0
10
พ 11 ธ.ค. 2019 5:32 pm โดย Grammanano
วิธีแปลงไฟล์ PDF เป็นไฟล์ Word ทางเว็ปไซต์
โดย noppadonsk พ 11 ธ.ค. 2019 4:24 pm บอร์ด Share Knowledge
0
5
พ 11 ธ.ค. 2019 4:24 pm โดย noppadonsk
วิธีใช้ text shortcut ใน Google Docs สร้างคำที่พิมพ์บ่อยให้พิมพ์ได้เร็วขึ้น
โดย noppadonsk พ 11 ธ.ค. 2019 4:02 pm บอร์ด Share Knowledge
0
5
พ 11 ธ.ค. 2019 4:02 pm โดย noppadonsk
รู้รึยัง Google Search ค้นหาเนื้อหาในวีดีโอได้แล้ว
โดย noppadonsk พ 11 ธ.ค. 2019 3:47 pm บอร์ด Share Knowledge
0
6
พ 11 ธ.ค. 2019 3:47 pm โดย noppadonsk
10 อันดับรถยนต์วินเทจ ที่ใครเห็นก็ต้องมอง
โดย Meygrand พ 11 ธ.ค. 2019 3:04 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
11
พ 11 ธ.ค. 2019 3:04 pm โดย Meygrand
อยากทราบวิธีการ override ไฟล์ bookmark มาใช้งานใน Extension ของ phpbb
โดย Ittichai_chupol พ 11 ธ.ค. 2019 11:00 am บอร์ด Programming - PHP
0
8
พ 11 ธ.ค. 2019 11:00 am โดย Ittichai_chupol
งานประจำวันที่ 11 ธันวาคม 2562
โดย noppadonsk พ 11 ธ.ค. 2019 10:05 am บอร์ด MT36 - นายนพดล สุชญากูล
10
40
พ 11 ธ.ค. 2019 7:00 pm โดย noppadonsk
งานประจำวันที่ 11 ธันวาคม 2562
โดย Grammanano พ 11 ธ.ค. 2019 10:02 am บอร์ด M098 - อนงค์นาท ไฝขาว
1
8
พ 11 ธ.ค. 2019 6:59 pm โดย Grammanano
งานประจำวันที่ 11 ธันวาคม 2562
โดย numtan5839 พ 11 ธ.ค. 2019 9:52 am บอร์ด M097 - ตรีเนตร บูรณโพธิ์ทอง
2
15
พ 11 ธ.ค. 2019 7:23 pm โดย numtan5839
R - Rotate back up file
โดย Grammanano จ 09 ธ.ค. 2019 8:20 pm บอร์ด M098 - อนงค์นาท ไฝขาว
1
7
จ 09 ธ.ค. 2019 8:24 pm โดย mindphp
การดึงข้อมูลใน ArrayList ภาษา Java
โดย Grammanano จ 09 ธ.ค. 2019 7:42 pm บอร์ด Share Knowledge
0
13
จ 09 ธ.ค. 2019 7:42 pm โดย Grammanano
ฺB - ไม่สามารถ cancel ใบกำกับภาษีที่สร้างผ่าน withholding tax โดยตรงได้
โดย nnamfon.26 จ 09 ธ.ค. 2019 7:27 pm บอร์ด M.D.Soft Co.,Ltd. - Tester
0
4
จ 09 ธ.ค. 2019 7:27 pm โดย nnamfon.26
การเพิ่มข้อมูลใน ArrayList ภาษา Java
โดย Grammanano จ 09 ธ.ค. 2019 6:19 pm บอร์ด Share Knowledge
0
10
จ 09 ธ.ค. 2019 6:19 pm โดย Grammanano
การทำงานแบบ Multitasking เหมาะกับใคร - การทำหลาย ๆ อย่างพร้อมกัน
โดย noppadonsk จ 09 ธ.ค. 2019 6:06 pm บอร์ด Share Knowledge
0
14
จ 09 ธ.ค. 2019 6:06 pm โดย noppadonsk
บทเรียนสำหรับนักออกแบบมือใหม่
โดย noppadonsk จ 09 ธ.ค. 2019 5:48 pm บอร์ด Share Knowledge
0
18
จ 09 ธ.ค. 2019 5:48 pm โดย noppadonsk