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

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

 

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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
วิธีแก้ไขปัญหา สำหรับ การนำ Template phpbb 3.3 มาใช้ใน phpbb 3.2
โดย thatsawan อ 31 มี.ค. 2020 7:27 pm บอร์ด phpBB user Guide Knowledge
0
3
อ 31 มี.ค. 2020 7:27 pm โดย thatsawan
B - เว็บเข้าไม่ได้ error www.phpbbthailand.com
โดย thatsawan อ 31 มี.ค. 2020 7:13 pm บอร์ด phpbbthailand.com
0
2
อ 31 มี.ค. 2020 7:13 pm โดย thatsawan
สอบถาม ผมลองใช้ curl ของ API ของ gitlab แล้ว "message":"401 Unauthorized ครับ
โดย jirawoot อ 31 มี.ค. 2020 5:16 pm บอร์ด Programming - C/C++ & java & Python
1
43
อ 31 มี.ค. 2020 5:35 pm โดย jirawoot
การเชื่อมต่อ API ของ GitLab เพื่อดาวน์โหลดไฟล์
โดย tsukasaz อ 31 มี.ค. 2020 12:52 pm บอร์ด PHP Knowledge
0
9
อ 31 มี.ค. 2020 12:52 pm โดย tsukasaz
วิธิการใส่ icon favorite เพื่อแสดงในแต่ละ browser
โดย Ittichai_chupol อ 31 มี.ค. 2020 11:14 am บอร์ด Graphic design
3
61
อ 31 มี.ค. 2020 12:57 pm โดย mindphp
สิ่งที่เกิดขึ้นจริงในการประชุมด้วยเทคโนโลยี Conference Call #Work from home
โดย thatsawan อ 31 มี.ค. 2020 10:39 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
15
อ 31 มี.ค. 2020 10:39 am โดย thatsawan
ช่วงนี้ Work From Home ก็จะลำบากนิดนึงแหละเนอะ #ทาสเเมว
โดย thatsawan จ 30 มี.ค. 2020 2:29 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
14
จ 30 มี.ค. 2020 2:29 pm โดย thatsawan
อยากทราบวิธีสร้างเว็บหน้าเดียวแบบกรอกข้อมูลเสร็จแล้วประมวลผล
โดย phongkhukhan ส 28 มี.ค. 2020 1:00 am บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
2
200
ส 28 มี.ค. 2020 1:09 am โดย mindphp
แสดงสินค้าที่อยากได้ใน Wishlist ด้วย Module Wishlist
โดย prmindphp ศ 27 มี.ค. 2020 5:26 pm บอร์ด MindPHP News & Feedback
0
58
ศ 27 มี.ค. 2020 5:26 pm โดย prmindphp
ต้องการสร้าง subtype
โดย blackbullx16 ศ 27 มี.ค. 2020 4:15 pm บอร์ด SQL - Database
0
169
ศ 27 มี.ค. 2020 4:15 pm โดย blackbullx16
อยากทราบวิธีการใช้งาน อีเวน cron ว่ามีการใช้งานอย่างไครับ
โดย Ittichai_chupol ศ 27 มี.ค. 2020 11:10 am บอร์ด Programming - PHP
1
87
ส 28 มี.ค. 2020 11:42 am โดย mindphp
อยากทราบวิธีการแก้ไขการแปลงปีวันที่ใน phpbb ผิด เมื่อกรอกวันที่ 29/02
โดย Ittichai_chupol ศ 27 มี.ค. 2020 10:42 am บอร์ด Programming - PHP
3
61
จ 30 มี.ค. 2020 7:01 pm โดย mindphp
อยากทราบวิธีการจะสร้างการทำงานสำหรับการแจ้งเตือนของ Extension ในอีเวน cron
โดย Ittichai_chupol พฤ 26 มี.ค. 2020 10:34 am บอร์ด PHP Knowledge
2
204
พฤ 26 มี.ค. 2020 2:34 pm โดย LEG
แสดงสินค้าขายดีในร้านค้าออนไลน์ด้วย Module Bestseller
โดย prmindphp พ 25 มี.ค. 2020 5:42 pm บอร์ด MindPHP News & Feedback
0
69
พ 25 มี.ค. 2020 5:42 pm โดย prmindphp
อยากทราบวิธีการที่จะสามารถปิดการแสดงของ modules ใน ucp โดยไม่ต้องเข้าไปจัดการในระบบ
โดย Ittichai_chupol พ 25 มี.ค. 2020 1:04 pm บอร์ด Programming - PHP
1
88
พ 25 มี.ค. 2020 1:05 pm โดย Ittichai_chupol
วิธีการสมัครเข้าใช้งาน Skype สำหรับใช้งาน VDO video conference ในมือถือ
โดย numtan5839 พ 25 มี.ค. 2020 11:26 am บอร์ด Microsoft Office Knowledge & line & Etc
1
204
พฤ 26 มี.ค. 2020 2:34 pm โดย LEG
อยากท่องเที่ยวใหว้พระอุดรกับรถเช่าอุดร แนะนำ
โดย udon999 อ 24 มี.ค. 2020 10:49 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
66
อ 24 มี.ค. 2020 10:49 pm โดย udon999
อยากเที่ยวอุดร ลองเช่ารถอุดร ท่องเที่ยวใหว้พระเชิญทางนี้
โดย udon999 อ 24 มี.ค. 2020 9:57 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
45
อ 24 มี.ค. 2020 9:57 pm โดย udon999
แสดงหมวดหมู่สินค้าให้กับร้านค้าออนไลน์ด้วย Module Category
โดย prmindphp อ 24 มี.ค. 2020 5:57 pm บอร์ด MindPHP News & Feedback
0
49
อ 24 มี.ค. 2020 5:57 pm โดย prmindphp
3 การขนส่งสินค้าที่แปลกที่สุดในโลก
โดย ngongsus อ 24 มี.ค. 2020 12:58 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
64
อ 24 มี.ค. 2020 12:58 pm โดย ngongsus