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

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

 

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

 

 

 

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
สร้างแบบสอบถามออนไลน์ ด้วย Excel Survey บน OneDrive
โดย birdkritsna อ 17 ก.ย. 2019 6:31 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
21
อ 17 ก.ย. 2019 6:31 pm โดย birdkritsna
ทำไมจึงต้องมี Data Mining (เหมืองข้อมูล) ?
โดย birdkritsna อ 17 ก.ย. 2019 6:04 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
17
อ 17 ก.ย. 2019 6:04 pm โดย birdkritsna
ทำความรู้จักกับ Big Data คืออะไร
โดย birdkritsna อ 17 ก.ย. 2019 5:36 pm บอร์ด SQL Knowledge
1
24
อ 17 ก.ย. 2019 5:52 pm โดย mindphp
วิธีการใช้งานฟังชั่น serialize() กับ unserialize() ใน phpbb
โดย Ittichai_chupol อ 17 ก.ย. 2019 5:18 pm บอร์ด PHP Knowledge
0
15
อ 17 ก.ย. 2019 5:18 pm โดย Ittichai_chupol
รู้จักกับคลังข้อมูล(Data Warehouse) คืออะไร มีประโยชน์อะไรบ้าง
โดย birdkritsna อ 17 ก.ย. 2019 5:11 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
21
อ 17 ก.ย. 2019 5:11 pm โดย birdkritsna
MS Exchange ไมโครซอฟท์ต่ออายุซัพพอร์ต 2010 ให้อีก 9 เดือน ถึง ตุลาคม 2020
โดย chatee supasand อ 17 ก.ย. 2019 5:09 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
14
อ 17 ก.ย. 2019 5:09 pm โดย chatee supasand
สิ่งที่ต้องทำ ก่อนโทรศัพท์หายหรือโดนขโมย
โดย birdkritsna อ 17 ก.ย. 2019 3:23 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
19
อ 17 ก.ย. 2019 3:23 pm โดย birdkritsna
VDO - ขั้นตอนการยกเลิกใบแจ้งหนี้ด้วยวิธีที่ถูกต้อง
โดย EyePornnipa อ 17 ก.ย. 2019 3:05 pm บอร์ด M089 - นางสาวพรนิภา ราชธานี
2
14
อ 17 ก.ย. 2019 5:32 pm โดย EyePornnipa
วิธีขับขี่ช่วงฝนตก ป้องกันอุบัติเหตุทางถนน
โดย birdkritsna อ 17 ก.ย. 2019 2:56 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
18
อ 17 ก.ย. 2019 2:56 pm โดย birdkritsna
สร้าง Menu Item ที่จะให้เมนูแสดงเฉพาะภาษาอังกฤษแล้ว Error ครับ
โดย jamepiyawat อ 17 ก.ย. 2019 2:52 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
5
35
อ 17 ก.ย. 2019 5:08 pm โดย jamepiyawat
ปัญหาไม่สามารถแสดงผลได้ทางหน้าจอ ขึ้น Object not found!
โดย birdkritsna อ 17 ก.ย. 2019 12:11 pm บอร์ด Programming - PHP
4
46
อ 17 ก.ย. 2019 3:56 pm โดย birdkritsna
ทำอย่างไรให้ใน loop แสดงสินค้าไม่ซ้ำกัน
โดย Patipat อ 17 ก.ย. 2019 11:19 am บอร์ด Joomla Development
0
18
อ 17 ก.ย. 2019 11:19 am โดย Patipat
รู้จักกับระบบปฎิบัติการ Harmony OS ที่ไม่ได้มีไว้แค่มือถือเท่านั้น
โดย birdkritsna อ 17 ก.ย. 2019 11:06 am บอร์ด Mobile Application Developing- Android, iOS
0
22
อ 17 ก.ย. 2019 11:06 am โดย birdkritsna
งานประจำวันที่ 17 กันยายน 2562
โดย birdkritsna อ 17 ก.ย. 2019 10:35 am บอร์ด M094 - กฤษณะ จะโรจน์รัมย์
3
17
อ 17 ก.ย. 2019 7:22 pm โดย birdkritsna
R - mdsoft_seleniumTest_mzchelix_byM088 (MT33) ทำเทส selenium
โดย chatee supasand อ 17 ก.ย. 2019 10:30 am บอร์ด MT33 - นายชาตรี สุภาแสน
0
5
อ 17 ก.ย. 2019 10:30 am โดย chatee supasand
R - mdsoft_seleniumTest_mzccart_byM084 (MT33) ทำเทส selenium
โดย chatee supasand อ 17 ก.ย. 2019 10:29 am บอร์ด MT33 - นายชาตรี สุภาแสน
0
7
อ 17 ก.ย. 2019 10:29 am โดย chatee supasand
งานประจำวันที่ 17 กันยายน 2562
โดย Patipat อ 17 ก.ย. 2019 10:23 am บอร์ด M088 - ปฏิภัทร สารธรรม
3
14
อ 17 ก.ย. 2019 7:22 pm โดย Patipat
งานประจำวันที่ 17 กันยายน 2562
โดย chatee supasand อ 17 ก.ย. 2019 10:07 am บอร์ด MT33 - นายชาตรี สุภาแสน
1
5
อ 17 ก.ย. 2019 7:37 pm โดย chatee supasand
งานประจำวันที่ 17 กันยายน 2562
โดย jamepiyawat อ 17 ก.ย. 2019 10:02 am บอร์ด M084 - นายปิยวัช เชาว์วิมล
1
4
อ 17 ก.ย. 2019 7:29 pm โดย jamepiyawat
งานประจำวันที่ 17 กันยายน 2562
โดย jirawoot อ 17 ก.ย. 2019 9:55 am บอร์ด M090 - นายจิระวุฒิ อัครลิขิตกุล
1
7
อ 17 ก.ย. 2019 7:27 pm โดย jirawoot